【发布时间】:2018-11-05 11:01:58
【问题描述】:
我从回形针迁移到 ActiveStorage,但我在 URL 方面遇到了一些困难。我使用的是service_url,但对我不起作用,因为每次调用该函数时,它都会返回不同的 URL。
我正在尝试使用Rails.application.routes.url_helpers.rails_blob_path。在本地,它有效。我只需要访问http://localhost:3000/rails/active_storage/disk/<etc>,其中rails/active_storage/disk/<etc> 是通过方法调用提供给我的。
但是如何从我的 Amazon S3 访问它?我启用了静态网站托管,但如果我点击http://my-production-bucket.s3-website.sa-east-1.amazonaws.com/rails/active_storage/blobs/<etc>,我会收到错误消息。我打错了端点/错误的主机?我还应该怎么做才能获得一个唯一(非动态)的 URL,还有其他最简单的方法吗?
我的 storage.yml:
amazon:
service: S3
access_key_id: <%= ENV['AWS_KEY'] %>
secret_access_key: <%= ENV['AWS_SECRET'] %>
region: 'sa-east-1'
bucket: 'production-bucket'
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
生产.rb:
config.active_storage.service = :amazon
【问题讨论】:
-
您遇到什么错误?您的网址很有可能是正确的,并且您没有正确设置公共访问权限
-
我其实不知道。在设置静态网站托管时,我们需要设置索引和错误页面。当我尝试访问
http://my-production-bucket.s3-website.sa-east-1.amazonaws.com/rails/active_storage/blobs/<etc>时,我收到错误页面。无论如何,我在 S3 上找不到该路径浏览。这有意义吗?或者它应该有rails和active_storage之类的文件夹?我尝试创建它们只是为了确保它们是公开的,但仍然没有奏效。
标签: ruby-on-rails amazon-web-services amazon-s3 rails-activestorage