【发布时间】:2016-10-11 03:13:27
【问题描述】:
我正在尝试使用 Carrierwave 和 Fog-Aws 上传到 S3,但遇到了问题。出于某种原因,雾正试图上传到我的存储桶
https://{bucket-name}.s3.amazonaws.com
但是,当我直接从 aws 访问文件时,url 格式是这样的:
https://s3-{region}.amazonaws.com/{bucket-name
每当我尝试使用 Fog 正在使用的路径时,都会出现以下错误:
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
所以我的问题是,有没有办法
A) 更改 S3 上的端点格式以匹配 Fog 所期望的格式,或者
B) 更改 Fog 的设置以改用这种不同的格式?
供参考:
我使用的是 Carrierwave 1.0 版,fog-aws 0.11.0 版
这是我的 carrierwave.rb 文件:
if Rails.env.test? or Rails.env.development?
CarrierWave.configure do |config|
config.storage = :file
config.root = "#{Rails.root}/tmp"
config.cache_dir = "#{Rails.root}/tmp/images"
end
else
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:region => ENV['AWS_S3_REGION'],
:endpoint => "https://s3-#{ENV['AWS_S3_REGION']}.amazonaws.com/#{ENV['AWS_S3_BUCKET_NAME']}"
}
config.storage = :fog
config.fog_directory = ENV['AWS_S3_BUCKET_NAME']
config.fog_public = false
end
end
【问题讨论】:
标签: ruby amazon-s3 carrierwave fog fog-aws