Git
AWS
deploy
Beanstalk

`eb deploy` で git archive が使用されるかどうかの基準

More than 1 year has passed since last update.

eb deploy はアプリケーションを zip で固めて S3 にアップしてデプロイといった一連の手順をまとめて行ってくれる便利なコマンドですが、zip で固める方法は以下の2種類あります。

  • zip コマンドを使用する方法
  • git archive コマンドを使用する方法

git archive が使用できる場合は優先して git archive が使用されます。
具体的には .git があるディレクトリ上で eb deploy した場合は自動的に git archive が使用されるようです。
(実験で .git があるディレクトリのサブディレクトリで実行してみたら zip の方が使用されました。)

アーカイブ方法を見分けたい場合

どちらの方法でアーカイブされたかを見分けたい場合は eb deploy に --debug オプションを付けて実行するとコンソールの出力内容から判別できます。

zip コマンドが使用された場合の出力例:

2017-08-24 18:59:11,380 (INFO) eb : Creating zip using systems zip

git archive コマンドが使用された場合の出力例:

2017-08-24 18:49:05,689 (INFO) eb : creating zip using git archive HEAD

git の管理ディレクトリでも zip コマンドでアーカイブしたい場合

以下の手順でできます。

1. beanstalk の設定ファイルに追記

設定ファイルにデプロイに使用する ZIP のファイル名を追記します。
eb deploy コマンドを実行するディレクトリからの相対パスになります。
アプリケーションディレクトリにゴミ zip を作りたくない場合は ../deploy.zip とかの方がいいかも。

.elasticbeanstalk/config.yml
deploy:
  artifact: ./deploy.zip

(設定ファイルは eb init をすれば作られます。)

2. アプリケーションを zip 化してデプロイ

zip -r -q ./deploy.zip -r * .[^.]*
eb deploy