LoginSignup
4
4

More than 3 years have passed since last update.

S3とherokuの設定に関するエラー

Last updated at Posted at 2019-11-03

ActiveStorageでアップロードした画像をS3に保存する際に生じたエラーについて書きました。

※ActiveStorageでアップロードした画像をS3に保存する方法は、以下の記事を参考にするとよいと思います。
https://kykt35.hatenablog.com/entry/2019/02/19/093112

エラーの発生内容

上記の記事を参考にしてS3の設定をして、ブラウザで本番環境の挙動を確認しようとしたら、application errorが発生した。

画像

エラーの原因追求

herokuにログインして、heroku環境でrails c(コンソール)コマンドを実行する。

$ heroku run rails c
Running rails c on ⬢ enigmatic-reaches-21915... up, run.1720 (Free)
Traceback (most recent call last):
    109: from /app/bin/rails:9:in `<main>'
    108: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
.
.
.

画像

エラーの原因発見

/app/vendor/bundle/ruby/2.5.0/gems/aws-sigv4-1.1.0/lib/aws-sigv4/signer.rb:612:in `extract_credentials_provider': Cannot load `Rails.config.active_storage.service`: (Aws::Sigv4::Errors::MissingCredentialsError)
missing credentials, provide credentials with one of the following options:
  - :access_key_id and :secret_access_key
  - :credentials
  - :credentials_provider

ログの一番下を見ると、エラーの原因を発見した。このエラーは、S3のaccess_key_idとsecret_access_keyがherokuの環境上で設定できていないことが原因で起こるエラーのようだ。

画像

解決方法

$ heroku config:set AWS_ACCESS_KEY_ID="<S3で設定したACCESS_KEY>"
Setting AWS_ACCESS_KEY_ID and restarting ⬢ enigmatic-reaches-21915... done, v23
AWS_ACCESS_KEY_ID: <S3で設定したACCESS_KEY>
$ heroku config:set AWS_SECRET_ACCESS_KEY="<S3で設定したSECRET_KEY>"
Setting AWS_SECRET_ACCESS_KEY and restarting ⬢ enigmatic-reaches-21915... done, v24
AWS_SECRET_ACCESS_KEY: <S3で設定したSECRET_KEY>

herokuにログインして、上記のコマンドを実行してS3のaccess_key_idとsecret_access_keyを設定する。そうしたところ、application errorは解決できました。

<参考記事>
https://qiita.com/nobu0717/items/a34a896f6e7ad68dc54e
https://teratail.com/questions/199552
https://qiita.com/m-itoidcf/items/77d064147a32169b5449

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4