【发布时间】: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/下吗?
标签: amazon-web-services amazon-s3 amazon-iam