Elastic Beanstalk のデプロイ時の処理

Published: 2020/2/9


Hooks とかとの基本的な関係。

  1. (初回デプロイ時のみ) PreInit Hooks が実行される。 (/opt/elasticbeanstalk/hooks/preinit)
  2. Deploy 処理
    1. EbExtensionPreBuild が実行される。
      • これは、 file や commands など、 ansible やつっぽい項目全部。
      • AppDeployPre でソースが展開される前に実行できていることから、 これらは zip の中だけではなくて、 Elastic Beanstalk 自体が、 メタデータとして処理している可能性が高い。
    2. AppDeployPre の hooks が実行される。
    3. EbExtentionPostBuild が実行される。
      • container_commands たちのこと。
    4. (デプロイ処理残り: AppDeployPost であったり、 AppDeployEnact だったりが実行されてたはず)
  3. (初回デプロイのみ) 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 のステップで編集すると良い。


Tags: elastic-beanstalk

関連記事