从Sagemaker笔记本实例上传15GB大文件至S3桶时遭遇CreateMultipartUpload AccessDenied错误求助
解决Sagemaker笔记本上传大文件到S3的AccessDenied问题
别着急,你的问题核心其实是Sagemaker笔记本实例是通过IAM角色而非IAM用户来访问AWS服务的——这就是你在IAM控制台看不到用户的原因,笔记本用的是角色身份,不是用户账号。结合你的情况,我给你分步骤梳理解决方案:
第一步:找到你的Sagemaker笔记本实例的执行角色
- 打开AWS Sagemaker控制台,定位到你正在使用的笔记本实例
- 点击实例进入详情页,切换到「Configuration」标签页
- 找到「IAM role ARN」项,复制这个ARN(格式类似
arn:aws:iam::XXXX:role/XXX)
方案一:给IAM角色添加S3分片上传权限(推荐,遵循最小权限原则)
因为你上传的是15GB大文件,AWS会自动启用分片上传,所以需要的权限不止PutObject,还要覆盖分片相关的操作:
- 打开IAM控制台,进入「Roles」页面,用刚才复制的角色名搜索并进入角色详情
- 点击「Add permissions」→「Attach policies」,选择「Create policy」(自定义策略更安全)
- 切换到「JSON」标签,粘贴以下策略内容(确保资源里的桶名和你的一致):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:CreateMultipartUpload", "s3:UploadPart", "s3:CompleteMultipartUpload", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::bauer-bucket", "arn:aws:s3:::bauer-bucket/*" ] } ] } - 给策略起个清晰的名字(比如
SagemakerBauerBucketUpload),保存后回到角色页面,把这个自定义策略附加到角色上 - 重启你的Sagemaker笔记本实例(权限变更有时需要重启才会生效),之后尝试重新上传文件
方案二:调整S3桶策略,允许笔记本角色访问
如果你更倾向于通过桶策略控制访问,可以修改现有桶策略,添加允许你的笔记本角色的规则:
- 打开S3控制台,找到
bauer-bucket,进入「Permissions」标签页的「Bucket policy」 - 把现有策略修改为如下内容,替换掉
这里替换成你的笔记本角色ARN为你之前复制的角色ARN:{ "Version": "2012-10-17", "Id": "Policy1", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::XXXX:root" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::bauer-bucket", "arn:aws:s3:::bauer-bucket/*" ] }, { "Sid": "AllowSagemakerRole", "Effect": "Allow", "Principal": { "AWS": "这里替换成你的笔记本角色ARN" }, "Action": [ "s3:PutObject", "s3:CreateMultipartUpload", "s3:UploadPart", "s3:CompleteMultipartUpload", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::bauer-bucket", "arn:aws:s3:::bauer-bucket/*" ] } ] } - 保存桶策略后,直接尝试上传文件即可
额外排查点
如果还是不行,可以检查这两个地方:
- 你的账号是否属于AWS组织?如果是,可能存在**IAM服务控制策略(SCP)**限制了S3访问,需要联系管理员确认
- 笔记本实例是否使用了VPC?如果VPC里的S3端点附加了限制策略,也会导致访问被拒绝
内容的提问来源于stack exchange,提问作者Miguel 2488
相关产品推荐
相关产品推荐

