我正在为新应用设置活动存储,并且在设置我的亚马逊凭据后无法让应用在生产中运行。
credentials.yaml.enc
文件中包含了我的s3存储桶凭据RAILS_MASTER_KEY
env变量添加到Heroku中。config.active_storage.service = :amazon
行添加到我的production.rb中。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中的变量,应用程序在生产中运行良好。知道这里可能出现什么问题吗?
可能是你忘记将config.require_master_key = true
添加到你的production.rb
?
仔细检查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)
以确保它们具有值。
我之前遇到过这个问题,似乎是Heroku上的一个bug。
您只需在设置选项卡上通过Heroku上的仪表板设置环境变量即可。
然后你可以使用ENV ['NAME_OF_YOUR_VARIABLE']访问它
这解决了我的问题。
同时检查你的Heroku日志,向上滚动以确保所有宝石都已安装。
韦尔普,这是愚蠢的。谜团已揭开。我的凭据在credentials.yaml.enc
文件中被注释掉了 - 我用默认的aws示例将它们添加到文件的顶部,这被注释掉了。