Heroku (本番) でアプリにデータをシードしようとすると、次のように表示されます。
Aws::S3::Errors::AccessDenied: アクセスが拒否されました
手動テストを試みると:
s3 = Aws::S3::Resource.new(region: 'us-east-1')
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 /app/vendor/bundle/ruby/2.7.0/gems/aws-sigv4-1.2.1/lib/aws-sigv4/signer.rb:613:in `extract_credentials_provider'
しかし、それは不可能です。
# storage.yml
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: us-east-1
これを heroku: の Rails コンソールで実行するとRails.application.credentials.dig(:aws, :access_key_id)
、キーが表示されます。したがって、「資格情報がありません」というエラーが表示されますが、資格情報を確認できることはわかっています。変。
それで、私はいくつかの(おそらく基本的な)ステップを逃したと思うところに来ましたが、何がわからないのですか。
その他の注意事項:
- 実行するだけでRails マスターキーが設定されていることを確認し、それを確認
heroku run env
できます