AWS SageMaker推理教程CreateModel操作ClientError问题求助
执行AWS SageMaker的
CreateModel操作时触发ValidationException,提示无法访问S3路径s3://sagemaker-sample-files/models/xgb-fraud/fraud-det-xgb-model.tar.gz,已确认执行角色(ARN:arn:aws:iam::xxx:role/service-role/AmazonSageMaker-ExecutionRole-xxx)的信任关系和权限策略配置如下,但问题仍存在:执行权限策略(AmazonSageMaker-ExecutionPolicy):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*" ] } ] }信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
解决思路
检查区域一致性
目标S3桶sagemaker-sample-files属于us-west-2(俄勒冈)区域,需确保你执行SageMaker操作的终端节点、CLI/SDK配置的区域为us-west-2,避免跨区域访问的权限或网络限制。验证角色实际访问权限
通过AWS CLI模拟角色访问S3对象,确认权限是否生效:- 获取角色临时凭证:
aws sts assume-role --role-arn "arn:aws:iam::xxx:role/service-role/AmazonSageMaker-ExecutionRole-xxx" --role-session-name "test-s3-access" - 导出临时凭证到环境变量:
export AWS_ACCESS_KEY_ID=<临时AccessKey> export AWS_SECRET_ACCESS_KEY=<临时SecretKey> export AWS_SESSION_TOKEN=<临时SessionToken> - 尝试下载目标对象:
aws s3 cp s3://sagemaker-sample-files/models/xgb-fraud/fraud-det-xgb-model.tar.gz ./test.tar.gz --region us-west-2
若此步骤报错,可直接定位问题根源(如角色权限未生效、S3对象有额外限制)。
- 获取角色临时凭证:
检查S3桶策略
登录S3控制台查看sagemaker-sample-files桶的桶策略,确认没有拒绝该执行角色访问目标对象的规则,部分公共桶会限制访问来源或角色范围。确认角色权限配置状态
进入IAM控制台找到目标执行角色,检查:AmazonSageMaker-ExecutionPolicy是否已正确附加- 角色的权限边界或其他关联策略是否存在拒绝
s3:GetObject的规则
校验CreateModel的角色参数
确认执行CreateModel时指定的RoleArn参数与实际角色ARN完全一致,避免拼写错误导致角色权限未被正确调用。
内容的提问来源于stack exchange,提问作者alin

