【问题标题】:S3 + Fog redirection error with eu-west-1 bucketeu-west-1 存储桶的 S3 + 雾重定向错误
【发布时间】:2013-09-14 16:29:58
【问题描述】:

我正在使用 Rails 4assets_sync(使用 Fog)将 Amazon S3 用于我的资产. S3 存储桶位于“eu-west-1”(爱尔兰)。

production.rbdevelopment.rb 环境中,我设置了以下行(BUCKETNAME 是真实的存储桶名称):

config.action_controller.asset_host = "http://s3-eu-west-1.amazonaws.com/BUCKETNAME"

此外,我还设置了下一个环境变量:AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、FOG_DIRECTORY、FOG_PROVIDER(以及 FOG_REGION=eu-west-1 拼命尝试)。

不管我做什么,我都会收到以下错误(已经是posted in StackOverflow,这个答案对我没有帮助)

rake assets:precompile
[WARNING] fog: followed redirect to BUCKETNAME.s3-external-3.amazonaws.com, connecting to the matching region will be more performant
[WARNING] fog: followed redirect to BUCKETNAME.s3-external-3.amazonaws.com, connecting to the matching region will be more performant
rake aborted!
Connection reset by peer (Errno::ECONNRESET)
(... more trace details ...)

尽管出现此错误,但有时仍会上传资产(如 application-7d888bd5c98564a528d102954bf2061a.css),但由于应用程序正在以这种方式链接资产,因此仍然可以正常工作:

<link data-turbolinks-track="true" href="//s3-eu-west-1.amazonaws.com/BUCKETNAME/assets/application.css?body=1" media="all" rel="stylesheet" />

如果有帮助,我在生产中启用了以下选项: config.assets.compile = false config.assets.digest = true

有什么建议可以帮助我接近解决方案吗?

【问题讨论】:

  • 似乎我在开发环境中没有 config.assets.digest = true 活跃。区域警告继续出现,但一切正常。

标签: ruby-on-rails amazon-web-services amazon-s3 fog


【解决方案1】:

配置 Fog S3 端点:

如果您使用 Heroku:

heroku config:add FOG_REGION=eu-west-1

如果您使用自定义 Rails 初始化程序 (config/initializers/asset_sync.rb):

AssetSync.configure do |config|
    config.fog_region = 'eu-west-1'

更多详情见:

https://github.com/rumblelabs/asset_sync#built-in-initializer-environment-variables

至于asset_host 配置,我认为您当前的设置应该可以工作,但assets_sync readme 有以下注意事项:

在非默认 S3 存储桶区域上:如果您的存储桶设置为一个区域 这不是默认的美国标准 (us-east-1),您必须使用第一个 url 的样式 //#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com 或 amazon 将 请求资产时返回 301 永久移动。注意 上面关于存储桶名称和句点的警告。

因此,如果您在请求资产时确实看到任何 301 重定向,请尝试:

config.action_controller.asset_host = "//BUCKETNAME.s3.amazonaws.com"

【讨论】:

  • 感谢您的帮助,dcro。我正在使用环境变量在本地建立 FOG_REGION。此外,我尝试了您引用的资产主机,但它无法正常工作(由于其他问题),因此我将其更改为 AWS 用于链接文件的主机。我认为你的答案是正确的,因为你所说的都是真实的,并且可以帮助与我处于相同情况的任何人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2020-02-15
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2020-08-07
相关资源
最近更新 更多