すべてがローカルで期待どおりに機能しています。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 で問題を引き起こしているのは何ですか?