Назад | Перейти на главную страницу

AWS Elastic Beanstalk - невозможно db: reset / db: seed Rails app после SSH

Я застрял в развертывании моего (второго) приложения Rails 5.2 на AWS с помощью Elastic Beanstalk. Код развернут нормально, но база данных PostgreSQL 9.4.18 вызывает проблемы.

EB правильно создал экземпляр RDS. Соответствующая часть моего database.yml выглядит следующим образом:

production:
  <<: *default
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  port: <%= ENV['RDS_PORT'] %>

Все эти переменные ENV заполняются в веб-интерфейсе EB.

я жестяная банка подключиться к серверу RDS с помощью pgAdmin III, добавив правило для входящих подключений, чтобы разрешить доступ к моему IP-адресу.

Но вот проблема: я не могу создать базу данных после SSHing в EC2.

Когда я печатаю

rails db:seed

или

rails db:reset

Я получаю такую ​​ошибку:

Traceback (most recent call last):
        10: from bin/rails:4:in `<main>'
         9: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.1/lib/active_support/dependencies.rb:287:in `require'
         8: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.1/lib/active_support/dependencies.rb:253:in `load_dependency'
         7: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.1/lib/active_support/dependencies.rb:287:in `block in require'
         6: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
         5: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
         4: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
         3: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
         2: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
         1: from /opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/compile_cache/iseq.rb:37:in `load_iseq'
/opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.1/lib/bootsnap/compile_cache/iseq.rb:37:in `fetch': Permission denied - bs_fetch:atomic_write_cache_file:open (Errno::EACCES)

И когда я пытаюсь

sudo env PATH=$PATH RAILS_ENV=production bundle exec rake db:seed

Я получаю эту ошибку

rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
/opt/rubies/ruby-2.5.1/bin/bundle:23:in `load'
/opt/rubies/ruby-2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => db:abort_if_pending_migrations
(See full trace by running task with --trace)

Для меня это довольно непрозрачно, поскольку, к счастью, мне не нужно делать это часто.

Поскольку мое более раннее приложение работает (хотя и с более ранней версией Ruby), я сравнил RDS, Configuration и все другие настройки AWS, которые я могу придумать. Что мне не хватает?