我正在尝试使用 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