启用S3账户级公共访问阻止设置时AWS MediaConvert 1401写入权限错误咨询
解决MediaConvert在账户级S3公共访问阻止开启时无法写入输出桶的问题
这个问题的核心是:当你开启账户级公共访问阻止后,所有未明确授权的公共访问都会被拦截,但MediaConvert是通过IAM服务角色来访问S3的——只要你给这个角色配置了正确的权限,并且目标桶的策略允许该角色访问,就完全不需要依赖公共权限,自然就能解决1401权限错误。
下面是具体的步骤:
1. 确保MediaConvert服务角色拥有S3读写权限
首先,你需要找到MediaConvert作业使用的IAM角色(默认是MediaConvert_Default_Role,如果是自定义角色就找你指定的那个),然后给它添加针对输入/输出S3桶的权限:
- 进入IAM控制台,找到对应的角色,编辑权限策略
- 添加以下JSON语句(替换
your-input-bucket和your-output-bucket为实际桶名):
{ "Version": "2012-10-17", "Statement": [ // 读取输入桶的权限 { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-input-bucket", "arn:aws:s3:::your-input-bucket/*" ] }, // 写入输出桶的权限 { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-output-bucket", "arn:aws:s3:::your-output-bucket/*" ] } ] }
2. 配置目标S3桶的桶策略,明确允许MediaConvert角色访问
即使IAM角色有了权限,S3桶的策略如果没有放行,还是会被拒绝(尤其是开启公共访问阻止后,默认的宽松规则会被收紧)。你需要给输出桶添加一条允许MediaConvert角色访问的策略:
- 进入S3控制台,打开目标输出桶的「权限」标签,编辑桶策略
- 添加以下JSON语句(替换
YOUR_ACCOUNT_ID为你的AWS账户ID,MEDIA_CONVERT_ROLE_NAME为MediaConvert使用的角色名,your-output-bucket为实际桶名):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:role/MEDIA_CONVERT_ROLE_NAME" }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-output-bucket", "arn:aws:s3:::your-output-bucket/*" ] } ] }
3. 验证配置
完成以上两步后,重新提交MediaConvert作业,应该就能正常写入输出桶了。这里的关键是:账户级公共访问阻止只会拦截匿名/公共访问,而IAM角色属于私有授权的范畴,完全不受这个设置的影响——之前禁用公共访问阻止时能正常运行,大概率是因为桶的默认权限允许了同账户的隐含访问,但这种方式不够安全,明确配置IAM权限才是符合安全规范的做法。
内容的提问来源于stack exchange,提问作者hedaia
相关产品推荐
相关产品推荐

