SageMaker IAM 预检
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/hf-cloud-sagemaker-iam-preflight。
技能介绍
部署 SageMaker 时 IAM 执行角色为什么总踩坑
每个 SageMaker 资源都需要执行角色:服务用该 IAM 角色从 S3 读模型工件、从 ECR 拉容器、写 CloudWatch 日志。常见失败模式是脚本先尝试创建新角色,却没有先查账户里是否已有可用角色;更糟的是调用者是 SSO 主体时,iam:CreateRole 一类操作会直接失败,只留下模糊的「权限被拒绝」。
技能在做什么
此技能把流程固定为:发现 → 验证 → 仅在必要时创建。
- 步骤 1:若用户已指定角色名,用
check_role.py校验是否存在,且信任策略允许sagemaker.amazonaws.com执行sts:AssumeRole;失败时在 stderr 说明原因,不静默「修」坏角色。 - 步骤 2:自动列出符合常见命名模式的角色(如
AmazonSageMaker-ExecutionRole-*),按最近使用时间排序(无RoleLastUsed时回退到创建时间),逐个验证信任策略,返回第一个可用 ARN。 - 步骤 3:仅当发现无结果且调用者有 IAM 权限时才创建;
create_role.py可将 S3 范围限定到指定存储桶。若无法创建(SSO),技能会明确停止并给出向管理员索取 ARN 或申请权限集的具体指引。
辅助脚本是跨平台 Python,应在 aws sts get-caller-identity 已成功的同一 shell 中运行,以继承区域、SSO 会话与凭据链。
边界与注意
「已验证」指角色存在且信任策略正确;不做全量 iam:SimulatePrincipalPolicy 权限审计——部署阶段的拒绝信息通常更准。最小权限模板见技能内 references/minimum-permissions.json;若 Python 脚本无法看到身份,可按文档中的原生 AWS CLI 等效命令手动预检。
使用场景
- 在 PowerShell 或本机终端里跑 SageMaker 部署脚本前,先确认账户里是否已有可 Assume 的执行角色 ARN
- 公司 SSO 登录 AWS,脚本自动建角色报 Access Denied,需要列出并按最近使用选出可用角色或拿到管理员指引
- 用户只提供了角色名,部署前要验证信任策略是否允许 sagemaker.amazonaws.com 承担该角色
- 有 IAM 权限但不想用 FullAccess,需为新建执行角色把 S3 策略限定到存放模型工件的存储桶
适合人员
- 在 AWS 上发布 SageMaker 端点或训练作业、常被执行角色或 SSO 权限挡住的 ML 工程师
- 维护 SageMaker 部署流水线,希望把 IAM 预检写进 Runbook 的平台或 DevOps 工程师
- 仅有业务账号 SSO、不能自行 CreateRole,却要在文档里写清该向谁要什么 ARN 的数据/算法同学
- 负责收紧 SageMaker 执行角色策略、对照最小权限 JSON 调整 S3/ECR 权限的云安全或 IAM 管理员