Japan AWS Jr. Champions Advent Calendar 2024 8日目の記事です。
はじめに
みなさんはCodeDeployを利用しているでしょうか?
CodeDeploy は、「Amazon EC2 インスタンス、オンプレミスインスタンス、サーバーレス Lambda 関数、または Amazon ECS サービスへのアプリケーションのデプロイを自動化するデプロイサービスです」。
私はCodeDeployのLambdaフックという機能を使って、デプロイ時にLambda処理を追加することを行ったときに悩んだデプロイステータスとライフサイクルの関係性について記載します。
前提
・CodeDeployを使ってECSへのデプロイを行う
・CodePipelineのデプロイステージでCodeDeployを利用する(ソースステージはCodeCommit、ビルドステージはCodeBuild)
内容
「はじめに」にも記載しましたが、CodeDeployのデプロイステータスとライフサイクルの関係性がわかりませんでした。デプロイステータスはマネジメントコンソール上に表示され、ステップ1~4があります。
【デプロイステータス】
- ステップ1:置き換えタスクセットのデプロイ
- ステップ2:本稼働トラフィックを置き換えタスクセットに再ルーティング中
- ステップ3:ロールバックの待機
- ステップ4:元のタスクセットの終了
ライフサイクルイベントはAWSのサイトにも記載されている通り、以下の通りです。
【ライフサイクルイベント】
(start)→BeforeInstall→(install)→AfterInstall→(AllowTestTraffic)→AfterAllowTestTraffic→BeforeAllowTraffic→(AllowTraffic)→AfterAllowTraffic
あまり調べてもこれといったサイトが出てこなく、これらの関係性について調べたり、問い合わせたりした結果、以下のことが分かりました。
結論、ステップ1とInstall、ステップ2とAllowTrafficが同じ意味だそうです。
(start)→BeforeInstall→(install)/ステップ1→AfterInstall→(AllowTestTraffic)/ステップ2→AfterAllowTestTraffic→BeforeAllowTraffic→(AllowTraffic)→AfterAllowTraffic→ステップ3→ステップ4
まとめ
CodeDeployのデプロイステータスとライフサイクルイベントの関係性について参考になったでしょうか。
ステップ1とInstall、ステップ2とAllowTrafficが同じ意味と理解していただければと思います。
少しでも参考になったら幸いです。
※マネコンの表示がなく、申し訳ございません。後ほど追加いたします。