如何将我的 AWS S3 Rails 5.2 ActiveStorage 设置为 public?

How do I set my AWS S3 Rails 5.2 ActiveStorage to public?

根据Rails guide,我可以将文件设置为public。但是,当我尝试它时,出现此错误:

Cannot load `Rails.config.active_storage.service`
invalid configuration option `:public'):

如果我删除 storage.yml 文件中的 public: true,它就可以工作。但是文件本身是私有的,所以我的 Cloudflare CDN 无法提供它。

# config.storage.yml
amazon_dev:
  service: S3
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
  secret_access_key: <%= ENV['AWS_SECRET_KEY'] %>
  region: us-west-2
  public-read: true
  bucket: xxxxxx
# config/environments/development.rb
config.active_storage.service = :amazon_dev

同时将 AWS S3 设置为 public: S3 bucket settings

还不能嵌入,所以这将是 link。

谢谢,

这与您的 AWS 设置有关,而不是 Rails。

创建存储桶时,取消选中“阻止所有 public 访问”:

查看仪表板中 public 和私有存储桶的区别:

添加政策:

可以是

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket1/"
            ]
        }
    ]
}