AWS CodeDeployを使ってECSサービスのBlue/Greenデプロイを実装しています。本番トラフィックを切り替える前に、置き換えタスクセットに対して自動インテグレーションテストをLambda関数で実行したいと考えています。AppSpecファイルのどのライフサイクルフックにLambda関数を設定すべきですか?
ECS Blue/Greenデプロイのライフサイクルフックは実行タイミングが重要です。 選択肢AのBeforeInstallは置き換えタスクセット作成前のフックです。この時点ではまだ置き換え環境が存在しないため、インテグレーションテストは実施できません。 選択肢BのAfterInstallは置き換えタスクセット作成後でテストトラフィック許可前のフックです。テスト用リスナーがまだ置き換えタスクセットを向いていないため、テストトラフィック経由での検証はできません。 選択肢CのAfterAllowTestTrafficはテスト用リスナー(通常ポート8080)が置き換えタスクセットを向いた後、本番トラフィックの切り替え前に実行されます。このタイミングでLambda関数を呼び出してインテグレーションテストを実施できるため、最適なフックです。 選択肢DのBeforeAllowTrafficは本番切り替え直前のフックです。テストフェーズは既に終了しており、このフックはクリーンアップなど本番切り替え直前の操作に使用します。インテグレーションテストの実施場所としては遅すぎます。