S3 Bucket 'fat'公网URL访问被拒排查咨询
S3公网访问被拒的排查方向
1. 桶策略缺少匿名访问权限
你当前的桶策略只给了特定IAM根账户和日志服务权限,完全没开放匿名用户的读取权限——这是公网访问失败的核心原因。如果要让所有人能访问图片,必须添加一条允许匿名GetObject的策略语句:
{ "Sid": "AllowPublicObjectRead", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::fat/*" }
2. 图片对象的ACL是私有状态
S3默认上传的对象ACL是私有,哪怕桶策略开了权限,单个对象也会拒绝访问。检查/men/shoes下的图片:
- 进入S3控制台找到对应对象,右键选择「编辑对象权限」
- 确认「读取」权限是否授予了「所有人」
3. 桶的阻止公共访问开关未关闭
AWS默认会开启阻止公共访问的防护机制,直接覆盖你的桶策略和ACL设置。前往桶的「权限」标签找到「阻止公共访问」:
- 确保未勾选「阻止所有公共访问」及相关子选项(要开放公网访问就不能锁死这类限制)
4. CORS规则的冗余与适配性
你当前的CORS存在两条完全重复的规则,虽然第三条开放了*允许所有来源,但如果UI部署在特定域名,建议直接将该域名添加到AllowedOrigins中(生产环境不建议用*,风险较高)。另外确认AllowedMethods中的GET已配置,这部分你当前的设置是正确的。
5. 访问URL的正确性
S3路径区分大小写,检查你使用的公网URL:
- 正确格式:
https://fat.s3.us-west-1.amazonaws.com/men/shoes/你的图片名.jpg - 避免文件夹名、图片名拼写错误,或路径中出现多余斜杠
6. IAM权限冲突(若使用凭证访问)
如果你是通过IAM用户/角色访问而非纯匿名,需检查对应IAM策略是否包含s3:GetObject权限,同时确认没有被Deny语句限制——Deny权限优先级高于Allow。
内容的提问来源于stack exchange,提问作者user204069
相关产品推荐
相关产品推荐

