0

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

1 回答 1

0

我相信 :region 是在这种情况下您需要更改的唯一设置。只要设置准确(并且不是默认的 us-east-1 区域),它就应该根据需要更改主机。

也就是说,我不希望也需要像这样更改端点。如果你需要使用 CNAME 的东西,它会被设置,这听起来不像你需要的。在设置区域时忽略这一点,希望能得到你想要的。

于 2016-10-12T19:53:30.437 回答