概要
AWS Elastic Beanstlak (以下EBS)でRailsを起動する時の環境変数をRails 5.1で新たに導入されたEncrypted secretを使った仕組みに変更する
環境
- Rails 5.1.2
- AWS Elastic Beanstalkデプロイ済(参考拙記事「(個人的まとめ)よく使うflexboxの設定」)
手順
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
- EBS→Configuration→Software Configuration→Environment Propertiesを開く。
-
secrets.yml.enc
に移した環境変数を削除する。 - Property Nameに
RAILS_MASTER_KEY
を追加する。この環境変数により、暗号化されたsecrets.yml.enc
を解除することができる - Property Valueに secrets.yml.keyの文字列を追加する
- 設定例
ApplyしてEBSに設定を反映させる。
以上。