企業はCodePipelineとCodeDeployを使用してECSサービスのブルーグリーンデプロイを実装しています。デプロイ後に問題が検出された場合に即座に自動ロールバックを行いたいと考えています。また正常なデプロイが完了した後は元のBlue(旧バージョン)タスクセットを60分間保持してから削除し、万が一の際に素早く切り戻せるようにしたいと考えています。この両方の要件を満たすCodeDeployの設定として正しいものはどれですか?
ECS CodeDeployブルーグリーンデプロイでは、デプロイグループのCloudWatch Alarmsを使ったAlarm-based Auto Rollbackにより、アラーム発火時に即時自動ロールバックが実現します。BlueGreenDeploymentConfigのTerminateBlueInstancesOnDeploymentSuccess.terminationWaitTimeInMinutes=60により、デプロイ成功後60分間Blueタスクセットが保持され、素早い手動切り戻しも可能です。 選択肢Bは、CodePipelineのウェイトアクションではCodeDeploy側のBlueタスク保持を制御できず、アラームベースの自動ロールバックも実現できません。 選択肢Cの「Lambda」は、イベント伝搬の遅延があり即時性に欠け、Blue保持もminimumHealthyPercentでは制御できません。 選択肢Dは、Cloudwatch Alarmチェックを組み込む考え方自体は誤りではありませんが、Blueタスクセットの保持を「古いタスク定義リビジョンをECRに保持する」方法で実現しようとしている点が根本的に誤りです。ECR(Elastic Container Registry)はコンテナイメージを格納するレジストリサービスであり、ECSのタスク定義とは異なるリソースです。ECS向けのLINEARデプロイ設定は実在しますが、BlueタスクセットのCodeDeployによる保持期間管理はTerminateBlueInstancesOnDeploymentSuccess.terminationWaitTimeInMinutesで行うものであり、ECRへのイメージ保持とは無関係です。