【Rails】Excon::Error::Forbidden (Expected(200) <=> Actual(403 Forbidden) excon.error.response

ruby-on-rails

こんにちは。たなか(@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 まとめ

ruby-on-rails

新機能実装時のエラーは、己を疑い、手順を再確認してみること

今回は他プロジェクトのリポジトリから流用した設定ファイルだったために、ディレクトリ名がそのままになってしまっていたのがエラーの原因でした。

CarrierWaveなんかは実装時に用意が必要なファイルがいくつかあるので、横着せずに丁寧に一つずつ整えるべきでしたね。

Forbidden(禁じられた)とかいうrailsエラーだったので「やべえ!なんかしちゃったかも!」と不要にビビってしまいました。気をつけよう…。

短いですが今回はここまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です