LoginSignup
3
3

More than 3 years have passed since last update.

RailsでAws::Sigv4::Errors::MissingCredentialsError というエラーが出たら

Last updated at Posted at 2019-08-29

エラー文の例

Rails6の新機能である、Action_textやActive_Storageを利用する際に、awsなどの認証情報をEDITOR=vi rails credentials:editで書き込んでいると思います。しかし、それだけだとローカルでは動作しますが本番環境では動きません。

...
/var/www/app-name/shared/bundle/ruby/2.6.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
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sigv4-1.1.0/lib/aws-sigv4/signer.rb:122:in `initialize'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.46.0/lib/aws-sdk-s3/plugins/s3_signer.rb:190:in `new'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.46.0/lib/aws-sdk-s3/plugins/s3_signer.rb:190:in `build_v4_signer'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.46.0/lib/aws-sdk-s3/plugins/s3_signer.rb:13:in `block in <class:S3Signer>'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-core-3.64.0/lib/seahorse/client/configuration.rb:70:in `call'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-core-3.64.0/lib/seahorse/client/configuration.rb:213:in `block in resolve_defaults'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-core-3.64.0/lib/seahorse/client/configuration.rb:57:in `each'
    from /var/www/app-name/shared/bundle/ruby/2.6.0/gems/aws-sdk-core-3.64.0/lib/seahorse/client/configuration.rb:57:in `each'
...

解決方法

おそらく大抵の場合、credentialsが読み込まれていないのが原因だと思われるのですが、そもそも読み込むように対処していないのでこのようなエラーが出るのは必然的です。そこで、上手く認証情報が読み込まれるように設定する必要があります。

deploy.rb
# 以下を追記
append :linked_files, 'config/master.key'

次に、サーバー側にログインして、shared/configの配下にローカルと同じmaster.keyファイルを作成します。
自分の場合ec2を使用しており、pathは/var/www/アプリケーション/shared/config/master.keyといった感じでした。

master.keyの内容はローカルと同じく認証コードをコピペして貼れば大丈夫です。

作業例

$ cd /shared/config
$ vi master.key

master.keyには123456abcde78910みたいなコードが書かれているはずなのでそれをコピーしてペーストすれば完了です。

後はデプロイすれば無事に認証情報が通り、動くはずです。

参考リンク先

・secrets.ymlや環境変数をRails 5.2のEncrypted Credentialsに移行する
https://qiita.com/d-mato/items/aab2b6b2f587a8582631

・Rails 5.2の新機能Credentialsでパスワード等を管理する
https://thr3a.hatenablog.com/entry/20180408/1523156956

3
3
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
3
3