AWS S3 Bucket策略编辑器访问被拒绝。

72

我使用根账户登录,按照设置静态 S3 网站的说明尝试为一个存储桶提供公共访问权限。但是在运行存储桶策略时出现了拒绝访问的错误消息。

该错误消息没有更多的详细信息。

错误


从您的根帐户创建一个用户帐户,分配所需的角色和权限,并从那里开始。 - mootmoot
2
解决方法是将存储桶设置为公开,然后保存存储桶策略,最后再将存储桶设置为私有。 - Lijo
6个回答

116

这可能是因为 S3 的最近更改导致的。要解决此问题,您需要向存储桶分配公共访问权限,请按以下步骤操作:

  1. 权限 选项卡中,单击 阻止公共访问 设置。

  2. 单击该设置右侧的 编辑enter image description here

  3. 确保未选中 阻止通过新公共存储桶或访问点策略授予的公共存储桶或对象的公共访问 选项。 enter image description here

  4. 单击 保存

  5. 返回到 Bucket Policy,然后再试一次。


4
这不是正确的方法,这只是一个临时解决方案。 - dev
1
你是什么意思? - mostafazh
5
向公众开放存储桶不是正确的方法,在 PRD 中如何做到这一点,您可能会在几分钟内泄露敏感内容。您需要为自己添加一个角色,这将允许您添加/修改存储桶策略,而不会提供公共访问权限。只有 ARN 才能访问存储桶,这些信息都在文档中给出了。 - dev
1
即使您拥有管理员角色,也无法修改存储桶策略,您必须显式添加一个角色以授予访问修改存储桶策略的权限。请参考以下链接:https://aws.amazon.com/premiumsupport/knowledge-center/s3-access-denied-bucket-policy/#:~:text=To%20resolve%20the%20Access%20Denied,%3AGetBucketPolicy%20and%20s3%3APutBucketPolicy.&text=Your%20change%20to%20the%20bucket,policy%20allows%20Amazon%20S3%20access. - dev
1
这个“回答”是错的,整个重点是设置一个具有非公共访问权限的静态网站存储桶,并通过CloudFront提供服务。 - hyankov
显示剩余3条评论

4
需要取消“此存储桶的管理公共存储桶策略”部分以引入“Allow”策略。
但要小心,取消勾选这些可能会使您能够引入一个策略,但该策略是公共策略,将使您的存储桶成为公共存储桶。
如果勾选这些,您将无法为此存储桶引入“Allow”策略。
不过,如果这些选项被勾选,您可以引入“Deny”策略。

2
接受的答案即使相关评论表明出于安全原因不是一个好主意,它仍然有效。实际上,它符合AWS在此处提供的静态网站托管指南。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html

这段文字的意思是:

回答了 OP 的问题。

总结一下在 Amazon S3 上配置静态网站的步骤(在链接页面中给出):

  1. 创建一个存储桶
  2. 启用静态网站托管
  3. 解除所有公共访问的阻止
  4. 添加使您的内容公开可用的存储桶策略(您在帖子中提供的 yaml 配置)
  5. 配置索引文档(通常为 index.html)
  6. 配置任何错误/重定向/无权限文档(对于 React,这通常也是 index.html)

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - Dom
感谢 @Dom。我已经相应地编辑了我的答案。链接的页面提供了更详细的信息,但希望这里提供的足以确认允许公共访问确实是AWS官方推荐的做法。 - Goldie

1
这对我们来说是一个最近出现的错误,当我们部署新的静态网站堆栈到S3时。显然,最近更改了新S3存储桶的默认值:https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-faq.html 我们通过serverless进行部署,并不得不在S3存储桶定义中添加一些配置以解决这个问题。
Resources:
   StaticSite:
     Type: AWS::S3::Bucket
     Properties:
       PublicAccessBlockConfiguration:
         BlockPublicPolicy: false

0
如果您的存储桶策略授予公共访问权限,请检查存储桶上是否启用了S3阻止公共访问。

0
将权限更改为以下内容对我有用: 在此输入图像描述

第二个选项比第一个更全面,“ANY”与“NEW”,所以你肯定也要取消第二个选项,对吧? - run_the_race

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接