启用AWS跨账号S3读写且桶所有者保留全部对象所有权的故障排查
遗漏配置排查清单
- 账号B侧SageMaker执行角色未配置对应S3权限
你在账号C侧的桶策略仅向账号B的根用户开放了权限,但SageMaker Notebook实际运行时使用的是绑定的IAM执行角色,而非账号B根身份。你需要登录账号B的IAM控制台,找到该Notebook对应的执行角色,为其添加如下权限策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::<Bucket Q name>", "arn:aws:s3:::<Bucket Q name>/*" ] } ] } - 存储桶Q的对象所有权配置不匹配
检查账号C侧存储桶Q的对象所有权设置:- 如果设置为Bucket owner enforced(桶所有者强制),该模式会禁用所有ACL配置,你代码中传入的
ACL='bucket-owner-full-control'参数以及桶策略中的s3:x-amz-acl条件都会触发权限拒绝,需删除代码中的ACL参数、移除桶策略里的Condition块即可,该模式下上传的对象所有权会自动归属账号C - 如果设置为Bucket owner preferred(桶所有者优先),原有桶策略和代码参数配置才生效,不要使用*Object writer(对象写入者)*模式
- 如果设置为Bucket owner enforced(桶所有者强制),该模式会禁用所有ACL配置,你代码中传入的
- KMS加密权限缺失
如果存储桶Q开启了KMS客户托管密钥(CMK)加密,你需要在账号C侧的KMS密钥策略中,添加账号B的SageMaker执行角色的kms:GenerateDataKey、kms:Decrypt权限,否则加密对象的读写操作都会被拒绝 - VPC端点策略限制
如果你的SageMaker Notebook部署在VPC内、通过VPC端点访问S3,需要检查VPC端点的访问策略是否允许访问账号C下的存储桶Q
内容的提问来源于stack exchange,提问作者Pranav Rudra
相关产品推荐
相关产品推荐

