Excon::Error::BadRequest in ●●Controller#●● S3に Carrierwaveで credentials

 以前AWSのS3バケットにデータを保存する設定をしました。そこにCarrierwaveで画像を保存したいとおもっていろいろ設定したんです。その設定が間違っていたらしく、タイトルの文言のエラーが出ました。その備忘録。

 

●エラー画面

f:id:kc-masui:20200325145526p:plain

f:id:kc-masui:20200325145601p:plain

●前提

 

AWSのS3バケットのSECRET_ACCESS_KEYをcredentials.ymlでアクセス・管理できるようにする

●そのSECRET_ACCESS_KEYを環境変数に保存することでセキュリティを高める

  この設定をしたのですが、credentials.ymlから正しくSECRET_ACCESS_KEYを取得できていない。エラー文からも

 

The authorization header is malformed; the authorization component \"Credential=<%= ENV[\"AWS_ACCESS_KEY_ID\"] %>/20200325/ap-northeast-1/s3/aws4_request\" is malformed.

「malformed」奇形の〜 という意味の文言が。リクエストの形が奇形になっていてBadRequestになってしまっているということだろう。この中で自分で設定しているのはcredentials.ymlなのでそこだろうと。

 

 設定の治し方は以前の記事の修正をしたのでそちらにまとめてあります。

 https://kc-masui-programmer.hatenablog.com/entry/2020/03/16/204215

 

 デプロイは難しいな。備忘備忘。