AWS S3 Bucket Policy验证失败:资源无效错误求助排查
问题排查与解决
1. 移除JSON非法注释
你的Bucket Policy里包含了-- NEW PART BELOW ---这类注释,JSON格式不支持该类型注释,会直接导致策略解析失败,AWS的错误提示可能因此误报为资源无效。先删除这行注释,修正后的完整JSON如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::MyS3Bucket/*" }, { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::MyS3LogsBucket/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::MyS3Bucket" }, "StringEquals": { "aws:SourceAccount": "MyAccountId" } } } ] }
2. 确认策略附加的目标桶正确
这个包含日志写入权限的策略,必须附加到日志存储桶(MyS3LogsBucket)上,而非源桶(MyS3Bucket)。如果把该策略加到源桶,策略里的Resource是日志桶的ARN,不属于当前桶的资源范围,AWS就会返回「Policy has invalid resource」错误。
操作步骤:
- 进入AWS控制台S3服务
- 找到
MyS3LogsBucket,进入「权限」标签页 - 编辑Bucket Policy,粘贴修正后的JSON(注意替换实际桶名和纯数字账号ID)
- 保存后回到源桶(MyS3Bucket)的「属性」标签,配置服务器访问日志,指定目标桶为
MyS3LogsBucket即可
3. 额外检查项
- 确保
MyAccountId替换为你的AWS纯数字账号ID(不含连字符) - 确认日志桶
MyS3LogsBucket状态正常,未被删除或配置冲突权限策略
内容的提问来源于stack exchange,提问作者David Hirst
相关产品推荐
相关产品推荐

