エラー文の例
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が読み込まれていないのが原因だと思われるのですが、そもそも読み込むように対処していないのでこのようなエラーが出るのは必然的です。そこで、上手く認証情報が読み込まれるように設定する必要があります。
# 以下を追記
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