Rails 5.2 credentials.yaml.enc和master.key无法在Heroku上运行

问题描述 投票:2回答:4

我正在为新应用设置活动存储,并且在设置我的亚马逊凭据后无法让应用在生产中运行。

  1. 我在我的credentials.yaml.enc文件中包含了我的s3存储桶凭据
  2. 我已将我的RAILS_MASTER_KEY env变量添加到Heroku中。
  3. 我根据this在storage.yml文件中设置了我的s3存储桶。
  4. 我已将config.active_storage.service = :amazon行添加到我的production.rb中。
  5. 我已将config.require_master_key = true添加到我的production.rb中

当我尝试在Heroku上运行我的应用程序时,它不会加载。做$ Heroku运行rails控制台给我错误:

"/app/vendor/bundle/ruby/2.3.0/gems/aws-sigv4-1.0.2/lib/aws-sigv4/signer.rb:517: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"

据我所知,我已经按照Rails 5.2的方式设置了我的凭据。我尝试过各种各样的资产预编译无济于事。当我尝试将我的亚马逊证书添加为环境时。 Heroku中的变量,应用程序在生产中运行良好。知道这里可能出现什么问题吗?

ruby-on-rails credentials rails-activestorage ruby-on-rails-5.2
4个回答
3
投票

可能是你忘记将config.require_master_key = true添加到你的production.rb


2
投票

仔细检查config/credentials.yml.enc文件中是否有正确的密钥。我有一个键倒secret_key_access而不是secret_access_key,并得到相同的错误。修复config/credentials.yml.enc中的密钥名称为我修复了它。

在rails控制台(本地)中,运行: Rails.application.credentials.dig(:aws, :access_key_id) Rails.application.credentials.dig(:aws, :secret_access_key) 以确保它们具有值。


1
投票

我之前遇到过这个问题,似乎是Heroku上的一个bug。

您只需在设置选项卡上通过Heroku上的仪表板设置环境变量即可。

然后你可以使用ENV ['NAME_OF_YOUR_VARIABLE']访问它

这解决了我的问题。

同时检查你的Heroku日志,向上滚动以确保所有宝石都已安装。


0
投票

韦尔普,这是愚蠢的。谜团已揭开。我的凭据在credentials.yaml.enc文件中被注释掉了 - 我用默认的aws示例将它们添加到文件的顶部,这被注释掉了。

© www.soinside.com 2019 - 2024. All rights reserved.