【问题标题】:Public access for Active Storage in Rails 6.1Rails 6.1 中 Active Storage 的公共访问
【发布时间】: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:ListBuckets3:PutObjects3:GetObjects3:DeleteObject
  • 您是否使用 aws cli 工具检查 s3 存储桶是否可以访问,您可以在其中列出对象
  • 我确实使用 aws-sdk-s3。我在哪里/如何检查权限? (我已经在问题的 UI 中列出了我在 UI 中看到的内容。)aws s3api list-objects-v2 --bucket mybucketname 成功列出了对象。

标签: ruby-on-rails amazon-s3 rails-activestorage


【解决方案1】:

从私人访问切换到公共访问时需要的权限是PutObjectAcl。在IAM Management Console 中添加它就可以了。

此外,您可以通过 UI 或 via a script 将现有服务中的所有图像标记为公共可读,而不是创建新服务。

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2023-03-18
    • 2022-11-28
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多