AWS S3:文件夹内上传文件无法公开访问问题求助
检查桶的Block Public Access设置
这是最常见的触发原因。进入S3桶的「权限」标签,找到「Block Public Access」配置,确保**Block public access to buckets and objects granted through any access control lists (ACLs)**选项处于关闭状态。如果该项开启,你手动设置的所有ACL权限都会被强制屏蔽,直接导致子目录对象无法公开访问。确认单个对象的ACL权限
不要依赖文件夹批量操作的结果,直接进入File4、File5的对象详情页,查看「权限」中的ACL设置,确认已添加Everyone用户并赋予「读取」权限。部分场景下GUI的文件夹批量操作不会递归应用到子对象,单独验证单个对象的权限可以快速定位问题。检查桶策略的资源范围
如果桶策略中允许访问的资源范围仅限定在根目录(比如把arn:aws:s3:::your-bucket-name/*写成arn:aws:s3:::your-bucket-name/File*),会直接限制子目录对象的访问权限。确保桶策略包含覆盖所有对象的公开读取规则,示例如下:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }注意替换
your-bucket-name为你的实际桶名。验证访问URL的准确性
S3对象名区分大小写,确认浏览器访问的URL路径(比如img/File4)和对象实际存储的路径完全一致,没有拼写错误或大小写偏差。标准访问URL格式为https://<bucket-name>.s3.<region>.amazonaws.com/img/File4。使用AWS CLI递归更新权限
如果GUI操作始终无法生效,用AWS CLI执行递归命令,强制为子目录下所有对象设置公开可读权限:aws s3 cp s3://your-bucket-name/img/ s3://your-bucket-name/img/ --acl public-read --recursive这条命令会遍历
img目录下所有对象,统一更新ACL配置。
内容的提问来源于stack exchange,提问作者ChrisC

