Elastic Beanstalk のデプロイ時の処理
Published: 2020/2/9
Hooks とかとの基本的な関係。
- (初回デプロイ時のみ)
PreInit Hooks が実行される。
(
/opt/elasticbeanstalk/hooks/preinit
) - Deploy 処理
- EbExtensionPreBuild が実行される。
- これは、 file や commands など、 ansible やつっぽい項目全部。
- AppDeployPre でソースが展開される前に実行できていることから、 これらは zip の中だけではなくて、 Elastic Beanstalk 自体が、 メタデータとして処理している可能性が高い。
- AppDeployPre の hooks が実行される。
- EbExtentionPostBuild が実行される。
- container_commands たちのこと。
- (デプロイ処理残り: AppDeployPost であったり、 AppDeployEnact だったりが実行されてたはず)
- EbExtensionPreBuild が実行される。
- (初回デプロイのみ) PostInit が実行される
なお、 setenv 時には configdeploy のみが、 app restart のときには restartappserver のみが、 それぞれ hooks として実行される模様。
config ファイルの処理について。
beanstalk は、 /tmp/deployment
を作業(staging)フォルダとして利用する。
アプリは /tmp/deployment/application
に。
それ以外の設定ファイルは /tmp/deployment/config
に配置される。
/tmp/deployment/config
に配置されたファイルたちは、
AppDeployEnact
のタイミングで、すべてターゲットパスへコピーされる。
設定ファイルのターゲットパスは、そのファイル名の #
を /
に変換したものが利用される。
その実、 nginx.conf などは、この手法で elasticbeanstlak によって管理されている。 AppDeployPre にて config のファイルが用意され、それが AppDeployEnact のタイミングで実際にコピーされる。
なので、もし ElasticBeanstalk が管理しているファイルを編集したい場合には、
/tmp/deployment/config
ディレクトリの中身を container_commands
のステップで編集すると良い。