【问题标题】:AWS S3 putObjectFile access denied on some buckets某些存储桶上的 AWS S3 putObjectFile 访问被拒绝
【发布时间】:2020-07-09 06:54:29
【问题描述】:

过去一小时我一直在寻找解决方案,但找不到任何解决方案。

我的aws上有几十个bucket,我可以很好地读写它们,它们都主要在美国地区。

但是,当我在欧盟(斯德哥尔摩)区域创建一个新存储桶时,尝试通过 PHP 使用 putObjectFile 时出现“访问被拒绝”错误。相同的脚本和其他所有内容都适用于所有其他存储桶,除了欧盟地区的存储桶。这是有原因的吗?

我可以通过 chrome 中的 aws 控制台上传文件。

【问题讨论】:

  • 如果您能够通过浏览器中的 AWS 控制台正常上传,我怀疑您在代码中引用新存储桶时可能会出现拼写错误。你检查过吗?
  • 是的,我什至复制并粘贴了实际名称。我做了更多的测试。在美国创建了一个新存储桶,在欧盟创建了一个,美国工作正常,欧盟获得许可被拒绝。设置中的其他所有内容都相同
  • 检查您使用的是最新版本的适用于 AWS 的 PHP 开发工具包。最近的地区使用不同的“签名”样式来验证请求。
  • 谢谢约翰,可能是这样。这个 SDK 已经有几年历史了
  • @RobertSamarji - 我不记得了,但我认为我使用的 SDK 已经过时了。使用更新的 SDK

标签: amazon-web-services amazon-s3


【解决方案1】:

您需要检查以下内容:

  • S3 存储桶是否与 IAM 用户/角色在同一个账户中?如果不是,则需要允许来自脚本使用的用户/角色的 putObject。
  • 附加的 IAM 策略,现有的 IAM 策略是否仅涵盖存储桶的某些场景,即区域锁定。如果政策不允许,用户/角色将无法连接。
  • 检查您的 S3 存储桶,确保没有应用存储桶策略,如果有,则需要确保它允许 putObject 访问。

【讨论】:

  • 谢谢。没有应用任何政策。我测试了创建 2 个相同的存储桶,只是不同的地区,只有欧盟地区的访问被拒绝(亚太地区也可以正常工作)是的,S3 在同一个账户中。
  • 您的 IAM 策略如何附加到角色/用户?
  • 用户作为管理员访问策略附加。某处是否有限制按地区访问的设置?
  • 您是 AWS 组织的一员吗?控制台和脚本之间也是同一个用户吗?
  • 不属于 AWS 组织。控制台通过主登录和一次登录,脚本通过 api 密钥/秘密
猜你喜欢
  • 2019-02-03
  • 2021-02-25
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
相关资源
最近更新 更多