【问题标题】:403 Error When Uploading Image on Heroku to S3 with Carrierwave and Fog使用 Carrierwave 和 Fog 将 Heroku 上的图像上传到 S3 时出现 403 错误
【发布时间】:2013-08-25 15:28:03
【问题描述】:

一切都在本地按预期工作。一旦我推送到heroku,我就无法再上传图片了。

我从 heroku 日志中得到的错误代码是: Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)

XML 响应包含:<Code>AccessDenied</Code><Message>Access Denied</Message>

我的fog.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => ENV["ACCESS_KEY_ID"],
    :aws_secret_access_key  => ENV["SECRET_ACCESS_KEY"]
    #:region                 => 'eu-west-1'
  }

  #Required for Heroku
  config.cache_dir = "#{Rails.root}/tmp/uploads"

  config.fog_directory = ENV["BUCKET_NAME"]

end

我的上传者:

class ImageUploader < CarrierWave::Uploader::Base
    storage :fog
    def store_dir 
        "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
end

Heroku 具有正确的环境变量 - 我使用了 figaro gem。在前几次得到 403 后,我还手动设置了它们,以确保 figaro 没有错误。

我认为这可能是该地区的问题,但我的存储桶是美国,并且载波文档说默认是 us-east-1

是什么导致 Heroku 出现问题,但不是本地问题?

【问题讨论】:

    标签: ruby-on-rails heroku amazon-s3 carrierwave fog


    【解决方案1】:

    禁止可能意味着配置的目录(而不是其他凭据)存在问题。您是否在本地和 Heroku 上使用相同的 BUCKET_NAME 值?我知道我当然尝试过使用我尚未创建的不同存储桶的东西(这也可能出现此错误)。因此,检查值是您所期望的(并且存储桶已经存在)是一个很好的起点。如果这不能为您解决问题,当然很乐意讨论并继续提供帮助。

    【讨论】:

    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2018-01-15
    • 2019-06-06
    • 1970-01-01
    相关资源
    最近更新 更多