用途:在部署或训练 SageMaker 资源前,确保存在可用的执行角色(execution role)。SageMaker 资源需要该 IAM 角色来读取 S3 模型产物、从 ECR 拉取容器并写日志,许多部署失败正是因为脚本未检查现有角色就尝试新建,而调用方又是 SSO 主体。
主要能力:按“先发现、再验证、必要时才创建”的顺序处理。check_role.py 可验证指定角色(成功时向 stdout 打印 ARN,退出码 0,失败时在 stderr 记录原因),或发现匹配常见 SageMaker 命名模式的角色,按最近使用时间排序并校验信任策略,返回首个可用 ARN;当所有候选都没有 RoleLastUsed 时回退到最新创建日期。create_role.py 仅在未发现角色且用户有权限时创建,第二个参数可将 S3 访问限定到特定桶,并安装最小权限内联策略,而不附加 AmazonSageMakerFullAccess。
使用方式:在 aws sts get-caller-identity 可成功执行的 shell 中运行 Python 辅助脚本:
python3 scripts/check_role.py # macOS / Linux python scripts/check_role.py # Windows
验证指定角色:python3 scripts/check_role.py "<role-name-or-arn>"
创建角色:python3 scripts/create_role.py "<role-name>" "<model-bucket>"
Windows 上不要通过 WSL、Git Bash、MSYS 等 Bash 垫片调用,这些环境可能不共享 Windows 的 AWS 配置、凭证、SSO 会话、环境变量或代理设置。若脚本无法看到身份,可在 PowerShell 中手动执行 AWS CLI 等效命令:aws iam list-roles、aws iam get-role 等。
适用场景:SageMaker 端点、模型或训练任务部署前的 IAM 角色预检。
限制:若用户是 SSO 主体且无创建权限,应停止并明确提示,请求管理员提供角色 ARN 或授予 iam:CreateRole、iam:PutRolePolicy 权限,不要盲目重试其他 IAM 操作。角色“已验证”意味着存在、信任策略允许 sagemaker.amazonaws.com 执行 sts:AssumeRole,且权限仅授予该部署所需的操作与资源;部署前应检查所选角色的策略并与 references/minimum-permissions.json 对比。该技能可在 GitHub Copilot、Claude Code、Codex 间移植,无需 MCP;不应在其文档规定的任务边界之外激活。