初めに
設定方法は様々あるが、今回はVSCodeで編集出来る様にして設定を行う。
ターミナルでもいいのだが、インデントが分かりにくく、無駄な時間を費やした経験があるからです。
VSCodeでcredentialsを編集できるようにする。
1,VSCodeで、「Command + Shift + P」を同時に押してコマンドパレットを開く。
2,「shell」と入力
3,「PATH内に'code'コマンドをインストールします」という項目が表示されるので、それをクリック。
上記の操作でターミナルから「code」と打つことでVSCodeを起動できるようになる。
編集の仕方
ターミナル
$ EDITOR='code --wait' rails credentials:edit
「 rails credentials:edit」が、credentialsファイルを編集するためのコマンド。
使用するエディタにcodeすなわち今回はVSCodeを指定。
下記の様に復号化された内容が表示される。
credentilals.yml
# aws:
# access_key_id: 123
# secret_access_key: 345
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: dcb9317dcd2d42d9e045a2cd00c20df0b8109・・・
そして、下記の様に編集
credentilals.yml
aws:
access_key_id: (ここにはダウンロードしたAccess key IDを入力)
secret_access_key: (ここにはダウンロードしたSecret access keyを入力)
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: dcb9317dcd2d42d9e045a2cd00c20df0b8109・・・
値の確認
ターミナル
$ rails c
$ Rails.application.credentials[:secret_key_base]
$ Rails.application.credentials[:aws][:access_key_id]
これで、先ほど見た設定の中身が表示される。
CarrierWaveの設定
CarrierWavenに「aws_access_key_id」と「aws_secret_access_key」を設定。
carrierwave.rb
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: Rails.application.credentials[:aws][:access_key_id],
aws_secret_access_key: Rails.application.credentials[:aws][:secret_access_key],
region: 'ap-northeast-1'
}
end
master keyがプッシュされない様に.gitignoreに記載
これで設定OK。
これでローカル環境の設定は完了。
あとは本番環境にも同じ設定をしたら終了。
.gitignore
# Ignore master key for decrypting credentials and more.
/config/master.key
本番環境の環境変数にマスターキーをセットする
本番環境で環境変数を使用するために、/etc/environmentsファイルで設定を行いため、sshで本番環境にログインする。
ターミナル
$ ssh -i ~/.ssh/(pemファイル名) ec2-user@(EC2のElastic IP)
リモートのターミナル
$ [ec2-user]$ sudo vim /etc/environment
ここで「i」キーを押して編集。
/etc/environment
(前略)
RAILS_MASTER_KEY='master.keyの値'
これで設定終了。exit抜ける。
EC2を一回ログインし直して、下記のコマンドで確認して設定されていればOK。
/etc/environment
(前略)
[ec2-user]$ env | grep RAILS_MASTER_KEY