AWS S3 访问被拒绝。存储桶权限被授予,那么当我是用户时,我需要存储桶策略吗?
Posted
技术标签:
【中文标题】AWS S3 访问被拒绝。存储桶权限被授予,那么当我是用户时,我需要存储桶策略吗?【英文标题】:AWS S3 AccessDenied. Bucket permissions are granted, so do I need Bucket Policy when I am the user? 【发布时间】:2012-01-31 04:20:38 【问题描述】:当我测试将图像上传到我的 S3 存储桶时,我得到一个 AWS::S3::AccessDenied(使用 Ruby on Rails)。该代码使用我自己的安全密钥和密码到我自己的存储桶,我拥有授予自己的所有权限(列表、上传/删除、查看权限、编辑权限)。
我是否还需要通过输入存储桶策略来设置 ACL 权限?我不明白为什么这是必要的,因为我的代码使用我自己的帐户密钥来访问 S3。此外,图像在我的网站上显示良好,因此读取权限似乎没有问题。
【问题讨论】:
【参考方案1】:您根本不需要在存储桶上设置任何策略,应该删除它们,至少让事情正常运行。也不需要设置任何 ACL。
账户持有人的 AWS ID + 密钥可以访问存储桶中的所有内容,而无需任何 ACL 或策略集。
一旦您开始使用它,您可能希望使用 amazon IAM 创建一个访问量低于完整帐户持有人的“用户”,并在您的 ruby 代码中使用该用户的凭证来处理上传。
我知道您希望上传的图片可以公开阅读,为此您需要一个策略或 ACL,但这不应该干扰上传。您可以稍后打开一些只读访问权限。
还可以在 Cyberduck 等工具中尝试这些 AWS 密钥和秘密,看看它是您的 ruby 代码还是 ID。
【讨论】:
以上是关于AWS S3 访问被拒绝。存储桶权限被授予,那么当我是用户时,我需要存储桶策略吗?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda 返回权限被拒绝尝试从 S3 存储桶获取对象
AWS S3 拒绝除 1 个用户之外的所有访问 - 存储桶策略
AWS S3 存储桶策略:如何授予对 EC2 实例的访问权限?