Я ударился о стену. Я развертываю приложение Rails 6 на AWS через Elastic Beanstalk. Развертывание выполняется через eb cli, и я использую для этого git.
Ошибка, которую я получаю, независимо от того, что я пытаюсь сделать, это: ArgumentError: key must be 16 bytes
Это происходит всякий раз, когда я пытаюсь получить доступ к зашифрованным учетным данным, например, Rails.application.credentials.sendgrid[:api_key]
, которые устанавливаются с использованием ключей среды с помощью EDITOR="mvim -f" rails credentials:edit --environment production
.
Все, что я видел, использует Rails 5.2, и все, кажется, хранится с использованием файлов master.key
, а не файлов yml, специфичных для среды.
Что я пробовал:
- Настройка
RAILS_MASTER_KEY
в свойствах среды веб-консоли EB - Я могу сделать
eb printenv
и действительно вижу этот ключ - В
config/production.rb
я установилconfig.require_master_key = true
- Я попытался установить
RAILS_PRODUCTION_KEY
на то же самое, что и мастер-ключ, но все равно безуспешно. - Я добавил
RAILS_ENV
со значениемproduction
в качестве свойства среды. - Я добавил свои собственные расширения контейнера для выполнения миграций и предварительной компиляции, и они по-прежнему выдают ошибку всякий раз, когда я пытаюсь получить учетные данные.
В целом, похоже, что он не может правильно получить главный ключ и жалуется на то, что ключ не является правильным 16 байтом.
Когда я запускаю RAILS_ENV=production bundle exec 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"