こんにちは。たなか(@tanaka_ricecake)です。
Ruby on RailsでWebアプリケーションサービスの開発をしています。
CarrirerWaveを使ってAWS S3にファイルをアップロードする実装中に以下のエラーがあったので内容と解決方法をご紹介します。
もくじ
Excon::Error::Forbidden (Expected(200) <=> Actual(403 Forbidden) excon.error.response
エラーメッセージの内容
Completed 500 Internal Server Error in 982ms (ActiveRecord: 4.0ms)Excon::Error::Forbidden (Expected(200) <=> Actual(403 Forbidden)
上記のエラーメッセージが表示され、画像のアップロードができないという状態。
CarrirerWaveを使ってAWS S3にファイルをアップロードするという機能の実装中であったため、その道中で何か手順を見逃しているのでは?という印象でした。
再度作業手順を振り返りつつ、ソースを見直していきます。
Excon::Error::Forbidden (Expected(200) <=> Actual(403 Forbidden) excon.error.response 解決方法
carrier waveの設定を見直す!
Carrierwave.rbを見直していったところ……
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'xxxxxxxxxxxxxxxxxxxx',
aws_secret_access_key: 'xxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx',
region: 'ap-northeast-1'
}
config.fog_directory = 'xxxxxxxx'
config.cache_storage = :fog
end
AWS S3に作成した実際のバケット名と、CarrierWave設定ファイルのdirectory名に誤りがありました。
この齟齬が原因でうまくいってなかったようです。
CarrierWaveno設定ファイルを修正しrailsを再起動したところ、上記のエラーは解消できました!よかった〜〜!
Excon::Error::Forbidden (Expected(200) <=> Actual(403 Forbidden) excon.error.response まとめ
新機能実装時のエラーは、己を疑い、手順を再確認してみること
今回は他プロジェクトのリポジトリから流用した設定ファイルだったために、ディレクトリ名がそのままになってしまっていたのがエラーの原因でした。
CarrierWaveなんかは実装時に用意が必要なファイルがいくつかあるので、横着せずに丁寧に一つずつ整えるべきでしたね。
Forbidden(禁じられた)とかいうrailsエラーだったので「やべえ!なんかしちゃったかも!」と不要にビビってしまいました。気をつけよう…。
短いですが今回はここまで。