5

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

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

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

"/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 中的变量,该应用程序在生产中运行良好。知道这里可能出了什么问题吗?

4

4 回答 4

8

Could it be that you forgot to add config.require_master_key = true to your production.rb?

于 2018-06-01T14:32:15.903 回答
3

我以前遇到过这个问题,似乎是 Heroku 上的一个错误。

您应该通过设置选项卡上 Heroku 上的仪表板设置您的环境变量。

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

这解决了我的问题。

还要检查你的 Heroku 日志,向上滚动以确保所有 gem 都已安装。

于 2018-05-17T02:42:36.117 回答
3

仔细检查您的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) 确保它们具有值。

于 2018-06-15T13:56:41.657 回答
0

哎呀,这太愚蠢了。谜团已揭开。我的凭据在文件中被注释掉了credentials.yaml.enc——我使用默认的 aws 示例将它们添加到文件的顶部,该示例被注释掉了。

于 2018-09-02T01:17:50.867 回答