Carrierwave + fog + s3无法使用Cloud Front URL

时间:2012-11-23 11:16:37

标签: ruby-on-rails amazon-s3 amazon-cloudfront fog

我遇到了carrierwave+fog+s3与亚马逊cloud front的问题。通过以下设置,我可以将文件上传到s3但是在上传之后,我从我的rails应用程序获得的S3对象URL没有基于assets_host的URL,即我将URL看作是这种格式{ {1}}

但它们都以此格式显示https://mycloudfrontname.cloudfront.net/uploads/myfile.mp3

这里可能有什么问题?

https://mybucketname.s3.amazonaws.com/uploads/myfile.mp3

更新

我发现这个代码位来自Carrierwave的CarrierWave.configure do |config| config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => 'XXXX', :aws_secret_access_key => 'XXXX', :region => 'us-east-1' } config.fog_directory = 'mybucketname' config.asset_host = 'https://mycloudfrontname.cloudfront.net' config.fog_public = false config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} end - 所以,如果我们将/lib/carrierwave/storage/fog.rb设置为上面的代码段,那么这一定是正常的吗?或者我还必须做其他任何配置吗?

asset_host

3 个答案:

答案 0 :(得分:0)

在您的环境文件中,您需要设置资产主机。只需将下面的行添加到config/environments/production.rb文件中,您就可以了。也可能想确保你使用最新版本的carrierwave和雾宝石。

-- config/environments/production.rb

Myapp::Application.configure do

  # Use Content Delivery Network for assets
  config.action_controller.asset_host = 'https://mycloudfrontname.cloudfront.net'

end

答案 1 :(得分:0)

不要使用asset_host。 asset_host设置适用于rails资产助手提供的文件。 CarrierWave文件以不同的方式处理。您要查找的配置是config.fog_host

config.fog_host = 'https://mycloudfrontname.cloudfront.net'

答案 2 :(得分:0)

config.fog_public更改为true并添加config.asset_host = 'YOUR_CND_ADDRESS'asset_host为假时,fog_public无法正常工作