Rails

Elastic Beanstalkの環境変数の一部をEncrypted secretに置き換える

More than 1 year has passed since last update.

概要

AWS Elastic Beanstlak (以下EBS)でRailsを起動する時の環境変数をRails 5.1で新たに導入されたEncrypted secretを使った仕組みに変更する

環境

手順

Raisl:encrypted secretのセットアップ

Rails:環境変数を編集する

置き換える前にAWSで設定していた環境変数は以下の6つ
* SECRET_KEY_BASE
* RDS_DB_NAME
* RDS_USERNAME
* RDS_HOSTNAME
* RDS_PASSWORD
* RDS_PORT

database.ymlを編集する

config/database.yml
production:
  <<: *default
  adapter: postgresql
  database: <%= Rails.application.secrets.rds_db_name %>
  username: <%= Rails.application.secrets.rds_username %>
  password: <%= Rails.application.secrets.rds_password %>
  host: <%= Rails.application.secrets.rds_hostname %>
  port: <%= Rails.application.secrets.rds_port %>

secrets.yml.encを編集

secrets.ymlは暗号化されて保存される必要があるため、直接ファイルを開いて編集する事が出来ないので、下記のようにrailsのコマンドを経由して編集する。(以下はatomで編集するときの例)

EDITOR="atom --wait" bin/rails secrets:edit

atomで開いた後、下記の通り編集して保存する。

config/secrets.yml.enc
# See `secrets.yml` for tips on generating suitable keys.
production:
  secret_key_base: 6fawijfoaijea96181ajwejfaokw111jfpwpw93232a004330ecd91fafiweof29321541e2bbf35ca5502dfd7675b28fwj93jfjw992joijaf9w1aa41d(Railsのシークレットキーのベース)
  rds_db_name: ebdb(RDSのデータベース名)
  rds_username: username(RDSのユーザー名)
  rds_hostname: a9fsfswowp12.ksj9js2s.ap-northeast-1.rds.amazonaws.com(RDSのホスト名)
  rds_password: diwdLsLdww926tdiw91ksq(RDSのパスワード)
  rds_port: 5432(RDSのポート番号)

secrets.ymlを編集

secret_key_baseは config/secrets.yml.enc から読み取るので config/secrets.yml の該当箇所を削除

config/secrets.yml
#production:
#  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> ここを削除する

EBSの環境変数を編集する

Rails:secrets.yml.keyの文字列をコピーする

secrets.yml.keyを開いて文字列をコピーする

config/secrets.yml.key
11212kjiu9u9jafwajeifwjaefafaf

AWS:Environment Properties

  1. EBS→Configuration→Software Configuration→Environment Propertiesを開く。
  2. secrets.yml.enc に移した環境変数を削除する。
  3. Property Nameに RAILS_MASTER_KEY を追加する。この環境変数により、暗号化された secrets.yml.enc を解除することができる
  4. Property Valueに secrets.yml.keyの文字列を追加する
  • 設定例

https://gyazo.com/642bd2de9e1c9fee92d64f5f3f3807d6

ApplyしてEBSに設定を反映させる。

以上。