令人困惑的 s3 存储桶策略上传问题
Posted
技术标签:
【中文标题】令人困惑的 s3 存储桶策略上传问题【英文标题】:confusing s3 bucket policy upload issue 【发布时间】:2021-06-04 23:59:44 【问题描述】:我希望我的应用能够将对象放入 s3 存储桶中,并且我希望公众能够读取这些对象。出于某种原因,除非我阻止所有公共访问,否则上传无法正常工作。日志显示此错误:Aws::S3::Errors::AccessDenied
我的阻止公共访问设置如下所示:
我的 Bucket 策略如下所示:
"Version": "2012-10-17",
"Statement": [
"Sid": "GetPhoto",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::site-public/photo/*"
]
公共访问设置表明他们不阻止存储桶策略,但该功能仍被阻止。为什么?
【问题讨论】:
什么功能被阻止(你的客户实际上在做什么?)以及错误代码/消息是什么? 如果您尝试使用公共 ACL 上传对象,除非您关闭所有选项,否则它将被阻止。 Blocking public access S3 Bucket。 @jarmod 客户端正在上传图片,错误为Aws::S3::Errors::AccessDenied
。 @samtoddler 我一直对这个问题感到困惑。我的上传选项中有acl: "public-read"
。我不应该阻止某些访问吗?我不希望每个人都能够上传,但我确实希望每个人都能够获取文件。如何在不暴露整个存储桶的情况下上传这些文件?
如果您希望能够使用公开读取 ACL 来selectively make objects public,那么您需要禁用与 ACL 相关的 BPA 设置。
您是如何尝试检索文件的,它们肯定在s3://site-public/photo/
下吗?
【参考方案1】:
您似乎需要能够使用公共读取 ACL 选择性地使对象公开可读,因此您需要禁用与 ACL 相关的阻止公共访问设置。
【讨论】:
以上是关于令人困惑的 s3 存储桶策略上传问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 amazon sdk 和存储桶策略从 ios 应用程序将图像上传到 amazon s3