読者です 読者をやめる 読者になる 読者になる

HerokuのDBにAmazon Elastic Beanstalkからアクセスする

AWS Elastic Beanstalk Rails heroku

これは何?

Herokuで運用しているアプリを、ふとAmazon Elastic Beanstalkに移行したくなった

けれど、軽く試すためだけのために、DBを移行するの大変

そんな時にお手軽に試す為の方法の記録

Heroku から DB の情報を取得する

heroku では、database.yml に接続するDBの情報を書かなくても良い感じに繋ぐけど、Amazon Elastic Beanstalk から heroku のDBに接続するためには、接続情報が必要

heroku config で調べる場合

$ heroku config

=== ***** Config Vars
DATABASE_URL:             postgres://#{username}:#{password}@#{hostname}:5432/#{db_name}

rails config で調べる場合

$ heroku run rails console

irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :pool=>5, :timeout=>5000, :database=>"*****", :username=>"*****", :password=>"*****", :port=>5432, :host=>"*****"}

それぞれ、出てきた情報をメモする

database.yml に設定を追記する

直接書くのはよろしくないので、以下のようにして、環境変数から値を取るようにする

production:
  <<: *default
  database: <%= ENV['DB_NAME'] %>
  username: <%= ENV['USERNAME'] %>
  password: <%= ENV['PASSWORD'] %>
  host: <%= ENV['HOSTNAME'] %>
  port: 5432

Elastic Beanstalk に環境変数を設定する

eb setenv DB_NAME=******
eb setenv USERNAME=******
eb setenv PASSWORD=******
eb setenv HOSTNAME=******.amazonaws.com

以上