開発チームがAWS CodeDeployを使用してAmazon ECSサービスのBlue/Greenデプロイメントを実施しています。新しいタスクセットが起動された後、本番トラフィックを切り替える前に、テスト用リスナー(ポート8080)経由で自動統合テストを実行したいと考えています。AppSpec.yml のどのライフサイクルフックにテスト用Lambda関数を設定すべきですか?
AfterAllowTestTraffic。 ECSのBlue/GreenデプロイにおけるAppSpec.ymlのライフサイクルフックは、BeforeInstall(タスクセット作成前)→ AfterInstall(タスクセット作成後・テストトラフィック切り替え前)→ AfterAllowTestTraffic(テスト用リスナーへのルーティング開始後)→ BeforeAllowTraffic(本番トラフィック切り替え前)→ AfterAllowTraffic の順に実行されます。 AfterAllowTestTraffic はテスト用リスナー(ポート8080等)が新タスクセットへトラフィックを流し始めた直後に実行されるため、本番トラフィック切り替え前の統合テスト実行に最適なフックです。 選択肢A(BeforeInstall)と選択肢B(AfterInstall)はテストトラフィックがまだ新タスクセットへ届いていない段階であり、テスト用リスナー経由の統合テストを実行できません。 選択肢C(BeforeAllowTraffic)は本番トラフィック切り替え直前のフックですが、AfterAllowTestTraffic でテストに失敗した場合に即時ロールバックが可能であり、本番前テストの実行には AfterAllowTestTraffic が設計上の正しいフックです。