DevOpsエンジニアはCodeDeployを使用してECSサービスのブルーグリーンデプロイを実装しています。グリーン環境(新バージョン)が起動した後、本番トラフィックを切り替える前に自動スモークテストを実行し、失敗時は即座にロールバックしたいと考えています。またカナリア期間中のエラー率が上昇した場合にもメトリクスベースで自動ロールバックしたいと考えています。この要件を満たすために設定すべき項目を2つ選んでください。
選択肢AのBeforeAllowTrafficフックは、ECSブルーグリーンデプロイにおいて本番トラフィックがグリーン環境に切り替わる前に実行されます。ECSブルーグリーンのフックはLambda関数として実装され、PutLifecycleEventHookExecutionStatus APIでFailedステータスをCodeDeployに報告することでトラフィック切り替えなしにロールバックされます。なおEC2/オンプレデプロイのフックはシェルスクリプトのexit codeで結果を伝えるのに対し、ECSブルーグリーンのフックはLambda関数からAPIコールバックで結果を伝える点が異なります。 選択肢CはCloudWatch AlarmsをCodeDeployデプロイグループのAlarm configurationに設定することで、カナリア期間中のALB 5xxエラー率上昇を検知して自動ロールバックが可能です。 選択肢BのAfterAllowTrafficフックはトラフィック切り替え後に実行されるため、切り替え前のスモークテストには使用できません。 選択肢DのCodePipelineへのLambdaアクション追加はパイプライン停止には有効ですが、CodeDeployのロールバック機構とは別であるため要件を満たしません。 選択肢EのECSタスク定義のヘルスチェックはECSレベルの異常検知に使われますが、CodeDeployの自動ロールバックとは直接連携しません。