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

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

これは何?

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

以上