前回 AWS Elastic Beanstalk を EB CLI からデプロイする方法について書きました。
この続きとして、今回はデプロイ対象のファイルを柔軟に制御する方法です。
gitと連携した eb deploy
を実行した場合、Beanstalk環境にデプロイされるファイルもgitでステージされているファイルとなります。
この場合、.gitignore が存在すると、そのルールに従ってEB CLIがパッケージングを行います。
既存の問題点
何も設定せずとも .gitignore を参照してくれるのは便利な反面、困ったことも起こり得ます。
例えばデータベースへの接続情報やパスワードのソルトなど、セキュリティ上の観点などでgitの管理対象外にしているファイルが実際は存在するのではないでしょうか?
こうしたファイルは実行時には同時にパッケージングしてBeanstalk上にデプロイする必要があるため、gitignoreに含まれている故に無視されてしまっては困ります。
そこで便利なのが .ebignore です
.ebignore を書いてみよう
.ebignore は名前の通り、 gitignore のBeanstalk版になります。
EB CLI がデプロイの際 .ebignore が存在するか確認し、存在すればそのルールに従ってアーカイブを作成しますが、
存在しない場合は .gitignore を参照するという挙動をします。
前述のような問題点はこの機能を使って解決できます!
gitignoreをコピー
ファイルの記述ルールは .gitignore と同様なので、まずはそのままコピーします。
1 |
$ cp .gitignore .ebignore |
ここでの .gitignore は次のような内容でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
!empty .env /vendor /node_modules typings/ .idea/ .vagrant/ .DS_Store Thumbs.db # Elastic Beanstalk Files .elasticbeanstalk/* !.elasticbeanstalk/*.cfg.yml !.elasticbeanstalk/*.global.yml |
.ebignore を編集
コピーしてきた .ebignore を編集していきます。
デプロイ時に無視したくない(=デプロイしたい)ファイルやディレクトリの先頭に # を付けて、コメントアウトしていくのがオススメです。
今回は .env にデータベースへの接続情報等が含まれているため、これをコメントアウトしておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
!empty #.env /vendor /node_modules typings/ .idea/ .vagrant/ .DS_Store Thumbs.db # Elastic Beanstalk Files .elasticbeanstalk/* !.elasticbeanstalk/*.cfg.yml !.elasticbeanstalk/*.global.yml |
その逆で、gitでは管理したいけどデプロイしても使わないよね、なんてファイルは新規ルールとして追加しておくこともできます。
EB CLIのデプロイでは毎回アーカイブが作られるため、デプロイするファイルは少なければ少ないほど毎回のデプロイが素早くできるようになります。