如何将我的 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/"
]
}
]
}
根据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/"
]
}
]
}