关于Amazon S3策略的问题及无效资源策略错误排查咨询
解决Amazon S3策略的「Policy has invalid resource」错误
我来帮你一步步排查并修复这个S3桶策略的问题,咱们先拆解导致错误的核心原因:
问题分析
- 资源ARN存在空格错误:第一个策略片段里的资源
arn:aws:s3:::www.salammee. com,域名后缀.com前面多了一个空格,这会直接导致AWS无法识别该资源,是触发错误的主要原因之一。 - JSON结构不合法:你把两个独立的JSON策略对象直接拼接在一起了,S3桶策略要求是单个完整的JSON对象,所有权限声明都要放在同一个
Statement数组中,不能出现并列的JSON对象。 - Principal格式错误:第二个声明里的
"AWS":["amermagd"]不是合法的AWS身份标识,必须使用完整的ARN(比如IAM用户ARN:arn:aws:iam::你的AWS账号ID:user/amermagd)或者AWS账号ID。 - 重复的Sid:第一个策略里有两个Statement使用了相同的Sid
Stmt1295042087538,Sid在同一个策略中必须唯一,用于区分不同的权限声明。
修正后的完整策略
{ "Version": "2012-10-17", "Id": "CombinedBucketPolicy", "Statement": [ { "Sid": "Stmt1295042087538-Zencoder", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::395540211253:root" }, "Action": [ "s3:GetObjectAcl", "s3:GetObject", "s3:PutObjectAcl", "s3:PutObject", "s3:ListMultipartUploadParts" ], "Resource": "arn:aws:s3:::www.salammee.com/*" }, { "Sid": "Stmt1295042087538-BucketOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::395540211253:root" }, "Action": [ "s3:ListBucketMultipartUploads", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::www.salammee.com" }, { "Sid": "Stmt1600123692406-UserAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::你的AWS账号ID:user/amermagd" }, "Action": "s3:*", "Resource": "arn:aws:s3:::www.salammee.com/*" } ] }
关键修正说明
- 移除了资源ARN中的空格,确保
arn:aws:s3:::www.salammee.com格式正确; - 将两个独立的策略合并为一个JSON对象,所有Statement统一放在一个数组里;
- 给重复的Sid添加了后缀,保证每个Sid唯一;
- 修正了Principal的格式,替换为合法的IAM用户ARN(请把
你的AWS账号ID替换为实际的账号ID); - 统一使用了更推荐的
2012-10-17版本的策略语法。
内容的提问来源于stack exchange,提问作者Amer Magd
相关产品推荐
相关产品推荐

