あるEコマース企業はAWS Lambdaで決済処理関数を運用しています。新バージョンへのデプロイにあたり以下の要件があります: ① 最初は新バージョンに全体の10%のトラフィックのみを流す ② 5分間エラーが発生しなければ残り90%も新バージョンに切り替える ③ エラーレートが閾値を超えた場合は自動的に旧バージョンに切り戻す ④ デプロイ担当者の手動操作なしに上記を完全に自動化する。この要件を最も効率的に満たす構成はどれですか?
AWS CodeDeploy は Lambda 関数のトラフィックシフティングを自動化できます。「CodeDeployDefault.LambdaCanary10Percent5Minutes」は最初の5 分間に新バージョンへ10% のトラフィックを流し、問題がなければ残り90% を自動的に切り替えるカナリアデプロイ設定です。CloudWatch アラームを設定することでエラーレートが閾値を超えた場合に自動ロールバックが実行され、手動操作なしで要件をすべて満たします。 選択肢A の Lambda エイリアスのルーティングで重み付けを設定し、5 分後にCloudWatch アラームを手動確認して100% の切り替えを行う方法は、CloudWatch アラームの手動確認と切り替えが必要であり「手動操作なしに自動化」という要件を満たしません。 選択肢C の Route 53 の加重ルーティングポリシーは DNS ベースのルーティングサービスであり、Lambda 関数に直接トラフィックをルーティングする機能はありません。実現するには複数のAPI Gateway エンドポイントが必要になり、構成が不必要に複雑になります。 選択肢D の AWS Step Functions によるデプロイワークフロー実装は技術的に可能ですが、CodeDeploy に比べて設計・実装の工数が大きく、エラーレートに基づく自動ロールバック機能も別途実装が必要になるため「最も効率的」ではありません。