使用eu-west-1存储桶进行S3 + Fog重定向错误

时间:2013-09-10 20:02:58

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

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

production.rb development.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

任何可以帮助我接近解决方案的建议?

1 个答案:

答案 0 :(得分:4)

配置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),你必须使用第一个   网址风格//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com或亚马逊将   在请求资产时返回301永久移动。请注意   请注意以上关于桶名称和期间的信息。

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

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