凭证文件未在 Amazon Linux 上读取 Rails 6.1
Posted
技术标签:
【中文标题】凭证文件未在 Amazon Linux 上读取 Rails 6.1【英文标题】:Credentials file not read Rails 6.1 on Amazon Linux 【发布时间】:2021-08-03 01:05:19 【问题描述】:我最近将我的Rails6.0
应用程序升级到Rails6.1
,并且我没有使用rails 中称为凭据的功能。所以我决定让它发挥作用。
我的应用有 3 个环境:
-
发展
分期
生产
要使用凭证功能,我使用以下命令:
用于开发:EDITOR="vscode --wait" rails credentials:edit --environment development
暂存:EDITOR="code --wait" rails credentials:edit --environment staging
生产:EDITOR="code --wait" rails credentials:edit --environment production
这是 yml 的示例
aws:
s3_access_key: XXXXXXXXX
s3_secret: xxxxxxxx
s3_bucket_name: xxxxxx
这是我的config/environments/staging.rb
config.paperclip_defaults =
storage: :s3,
s3_protocol: :https,
preserve_files: true,
s3_region: 's3_region',
url: ':s3_alias_url',
s3_credentials:
bucket: Rails.application.credentials.aws[:s3_bucket_name],
access_key_id: Rails.application.credentials.aws[:s3_access_key],
secret_access_key: Rails.application.credentials.aws[:s3_secret]
由于我的应用程序托管在 AWS ElasticBeanstalk 上,因此在我部署 rails 应用程序时进行了所有更改后,部署失败并出现以下错误:
NoMethodError: undefined method `[]' for nil:NilClass
/var/app/ondeck/config/environments/staging.rb:51:in `block in <main>'
我的 lineNo#51 指向这个Rails.application.credentials.aws[:s3_bucket_name]
我也尝试过简单的方式 - 即不以嵌套方式应用/添加属性,但问题保持不变。
很明显,凭证文件没有加载。
请推荐
【问题讨论】:
【参考方案1】:您是否将主密钥(config/master.key)复制到服务器?默认情况下它在 .gitignore 中。 您可以将此文件符号链接到服务器文件系统中的共享文件夹,以便于部署。
【讨论】:
你好@alex-govorov 我没有 config/master.key 存在。相反,我确实有 config/environments/development.key、config/environments/staging.key 和 config/environments/production.key 我在这里遗漏了什么吗? 我是否必须创建此文件并设置如下值:RAILS_STAGING_KEY=cat config/credentials/staging.key
它既不在 .gitignore 中,我只能看到:/config/credentials/development.key
/config/credentials/test.key
/config/credentials/staging.key
/config/credentials/production.key
哦,确定您没有 config/master.key,因为您创建了特定于环境的密钥。所以是的,你朝着正确的方向前进。 heroku 示例:heroku config:set RAILS_MASTER_KEY=cat config/credentials/production.key
添加 RAILS MASTER KEY 的解决方案对我有用。接受你的回答。以上是关于凭证文件未在 Amazon Linux 上读取 Rails 6.1的主要内容,如果未能解决你的问题,请参考以下文章
Amazon S3 HTTPS 未在 Linux 上使用 Chrome 和 wget 加载
用户数据脚本未在我的自定义 AMI 上运行,但在标准 Amazon linux 中运行