【问题标题】:Fog with Carrierwave upload to S3 default upload path invalid带有 Carrierwave 的雾上传到 S3 默认上传路径无效
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      相关资源
      最近更新 更多