【Ruby On Rails】RubyAws::Sigv4::Errors::MissingCredentialsErrorについて


エラーの背景

AWS導入後、ローカル環境で開発中のアプリから画像をアップロードし、実際に保存した物がS3に保存されているかを確認しようとしたところ、今回の様なエラーがでました。

エラー文の意味

「読み込めません。認証情報が欠けているので、次のいずれかを用いて認証情報を与えてあげてください」

という感じになります。

:access_key_id
:secret_access_key
:credentials

....

つまり、それらの認証情報を正しく拾って、読み込まれていない可能性があるということです。

確認したこと

S3で保存先できる様にするために、S3でデータが格納される様にバケットは用意しましたし、リージョンやチェックボックスも適切な設定しました。バケットポリシーもユーザーのARN、バケット名を間違いなく入力しました。

そして、ターミナルで環境変数は代入し、confing/environments/production.rbの記述も、config/storage.ymlの記述も正しく行われていることを確認しました。

confing/environments/production.rb
config.active_storage.service = :amazon
confing/environment/development.rb
config.active_storage.service = :amazon
config/storage.yml
amazon:
  service: S3
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
  secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
  region: ap-northeast-1
  bucket: バケット名

仮説

ターミナルでの入力が正しく行われていない

仮説を踏まえた作業

vim ~/.zshrcコマンドやsource ~/.zshrcコマンドで正常に動くか確認

結果

source ~/.zshrc を実行していないことが原因でした。

そもそもsource ~/.zshrcとは

vim ~/.zshrcでキーを入力して保存した後に、行うコマンド。.zshrcを読み込み直してから、環境変数として追加した変数を使える様にするコマンド。

そりゃ実行していなきゃ、画像アップできませんというエラー出てきますよね。一度間違えたことは次回から忘れずに実行していきたいと思います。