gpt4 book ai didi

amazon-elastic-beanstalk - AWS Beanstalk 中的 Rails 6 凭证 : ArgumentError: key must be 16 bytes

转载 作者:行者123 更新时间:2023-12-04 10:30:15 25 4
gpt4 key购买 nike

我碰壁了。我正在通过 Elastic Beanstalk 将 Rails 6 应用程序部署到 AWS。部署是通过 eb cli 完成的,我使用 git 来完成。

无论我尝试什么,我遇到的错误是:ArgumentError: key 必须为 16 字节

每当我尝试访问加密凭据(例如 Rails.application.credentials.sendgrid[:api_key])时,就会发生这种情况,这些凭据是使用环境 key 与 EDITOR= 设置的“mvim -f”rails凭证:编辑--环境生产

我所看到的一切都是使用 Rails 5.2,并且所有内容似乎都是使用 master.key 存储的,而不是特定于环境的 yml 文件。

我尝试过的:

  1. 在 EB Web 控制台的环境属性中设置 RAILS_MASTER_KEY
  2. 我可以执行 eb printenv 并且我确实看到了这个键
  3. config/development.rb中,我设置了config.require_master_key = true
  4. 我尝试将 RAILS_PRODUCTION_KEY 设置为与主 key 相同的值,但仍然失败
  5. 我添加了 RAILS_ENV,并将 product 作为环境属性的值
  6. 我添加了自己的容器 ebextensions 来运行迁移和预编译内容,但每当我尝试检索凭据时,它们仍然会以同样的方式出错。

总的来说,它似乎无法正确获取主 key ,并且它提示 key 不是正确的 16 字节。

当我在本地运行 RAILS_ENV=生产捆绑执行rails c 时,它工作得很好,我可以获得所有凭据。

这是我的 .ebextensions/config 文件:

# Beanstalk ain't ready for Rails 6. This fix is courtesy of https://austingwalters.com/rails-6-on-elastic-beanstalk/
# Additional node 6 cleanup courtesy of https://github.com/nodesource/distributions/issues/486

commands:
00_remove_node_6_if_present:
command: "/bin/rm -rf /var/cache/yum && /usr/bin/yum remove -y nodejs && /bin/rm /etc/yum.repos.d/nodesource* && /usr/bin/yum clean all"
ignoreErrors: true
01_download_nodejs:
command: "curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -"
02_install_nodejs:
command: "yum -y install nodejs"
03_install_yarn:
command: "sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo && sudo yum install yarn -y"
04_mkdir_webapp_dir:
command: "mkdir /home/webapp"
ignoreErrors: true
05_chown_webapp_dir:
command: "chown webapp:webapp /home/webapp"
ignoreErrors: true
06_chmod_webapp_dir:
command: "chmod 0744 /home/webapp"
ignoreErrors: true
07_chmod_logs:
command: "chown webapp:webapp -R /var/app/current/log/"
ignoreErrors: true
08_create_log_file:
command: "touch /var/app/current/log/production.log"
ignoreErrors: true
09_chown_log_production:
command: "chown webapp:webapp /var/app/current/log/production.log"
ignoreErrors: true
10_chmod_log_dir:
command: "chmod 0664 -R /var/app/current/log/"
ignoreErrors: true
11_update_bundler:
command: "gem update bundler"
ignoreErrors: true
12_config_for_update_nokogiri:
command: "bundle config build.nokogiri --use-system-libraries"
13_chown_current:
command: "chown webapp:webapp -R /var/app/current/"
ignoreErrors: true
14_chmod_current:
command: "chmod 0755 -R /var/app/current/"
ignoreErrors: true
15_chown_current:
command: "chown webapp:webapp -R /var/app/ondeck/"
ignoreErrors: true
16_chown_current:
command: "chmod 0644 -R /var/app/ondeck/"
ignoreErrors: true

container_commands:

17_install_webpack:
command: "npm install --save-dev webpack"
18_config_for_update_nokogiri:
command: "bundle config build.nokogiri --use-system-libraries"
19_precompile:
command: "RAILS_ENV=production bundle exec rake assets:precompile"
20_database_migration:
leader_only: true
command: "RAILS_ENV=production bundle exec rake db:migrate"

最佳答案

是什么解决了这个问题:

eb setenv RAILS_MASTER_KEY=XXXXXXXX

尽管我在 EB Web 控制台中设置了此环境属性,但由于某种原因它没有被使用。在控制台中设置后,它会给我一条更新成功的消息。

Environment update completed successfully.

但是一旦我执行了$eb部署,我就会在事件中看到这一点:

Environment update is starting.

这让我相信它覆盖了我在控制台中设置的所有环境变量,或者至少它以某种方式设置了我想要的不同子集。一旦我尝试 $eb setenv RAILS_MASTER_KEY=XXX 就可以找到 Rails 凭据。

关于amazon-elastic-beanstalk - AWS Beanstalk 中的 Rails 6 凭证 : ArgumentError: key must be 16 bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60447706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com