凭证文件未在 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、c​​onfig/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 中运行

猪用户定义函数中的 aws Amazon S3 客户端凭证

Amazon SES 从实例配置文件元数据服务器检索凭证时出错。 (客户端错误:404)

PHP 会话未在 Amazon EC2 上持续存在

提供商链未获取 AWS 凭证文件