【发布时间】:2021-03-26 16:00:37
【问题描述】:
我在带有 AWS 的 Rails 站点上使用 Active Storage。升级到 6.1 后,我想为每个 the guide 配置公共访问权限,以便我的图像具有永久 URL。
我已确定我需要保持现有服务不变,以便之前上传的图像继续工作。我创建了一个新服务并将应用程序配置为使用它like this。
以前的图像继续以这种方式工作,但新图像上传会导致 Aws::S3::Errors::AccessDenied。请注意,使用的凭据与以前的工作中的非公共服务完全相同。该指南提到存储桶需要具有适当的权限,而不是确切需要设置的权限。
在 AWS 中,“阻止公共访问(存储桶设置)”部分全部设置为“关闭”。在“访问控制列表 (ACL)”中,“存储桶所有者(您的 AWS 账户)”对于“对象”和“存储桶 ACL”都有“List, Write”。没有列出其他权限。我尝试将“所有人(公共访问)”更改为“对象”的“列表”和“存储桶 ACL”的“读取” - 似乎无法解决问题。
如何获取与 Active Storage 一起使用的公共 URL?
【问题讨论】:
-
如果您使用的是“aws-sdk-s3”gem,那么您需要添加以下权限:
s3:ListBucket、s3:PutObject、s3:GetObject和s3:DeleteObject。 -
您是否使用 aws cli 工具检查 s3 存储桶是否可以访问,您可以在其中列出对象
-
我确实使用 aws-sdk-s3。我在哪里/如何检查权限? (我已经在问题的 UI 中列出了我在 UI 中看到的内容。)
aws s3api list-objects-v2 --bucket mybucketname成功列出了对象。
标签: ruby-on-rails amazon-s3 rails-activestorage