Ошибка 403 при загрузке изображения на Heroku на S3 с помощью Carrierwave и Fog

Все работает как положено локально. Как только я нажимаю на героку, я больше не могу загружать изображения.

Код ошибки, который я получаю из журналов heroku: Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)

Ответ XML содержит: <Code>AccessDenied</Code><Message>Access Denied</Message>

My 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. Я также установил их вручную после того, как первые несколько раз получил ошибку 403, чтобы убедиться, что в figaro нет ошибок.

Я думал, что это может быть проблема с регионом, но моя корзина находится в США, а в документации по несущей волне указано, что по умолчанию используется us-east-1.

Что вызывает проблему на Heroku, но не локально?


person Dan Garman    schedule 22.08.2013    source источник


Ответы (1)


Запрещено может означать проблему с настроенным каталогом (а не с другими учетными данными). Используете ли вы одно и то же значение BUCKET_NAME как локально, так и на Heroku? Я знаю, что я определенно пытался использовать вещи с другим сегментом, который я еще не создал (что также может привести к этой ошибке). Таким образом, проверка значения — это то, что вы ожидаете (и то, что ведро уже существует), — это пара хороших отправных точек. Конечно, рад обсудить и продолжить помогать, если это не решит проблему для вас.

person geemus    schedule 23.08.2013
comment
Я на самом деле забыл об этом вопросе, но это была ошибка копирования-вставки с моим BUCKET_NAME между средами. - person Dan Garman; 24.08.2013
comment
Иногда возникает ошибка с генератором тумана. См. stackoverflow.com/a/28375102/737275. - person blnc; 07.02.2015