我遇到了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
答案 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
无法正常工作