開発チームが AWS SAM を使用して Lambda 関数をデプロイしています。本番環境での安全なリリースのため、最初は新バージョンに 10% のトラフィックを流し、10 分後に問題がなければ残り 90% を一括で切り替えるデプロイを行いたいと考えています。CloudWatch アラームと連動した自動ロールバックも必要です。SAM テンプレートの正しい設定はどれですか?
SAM の AutoPublishAlias を設定するとデプロイごとに新しい Lambda バージョンが発行され、DeploymentPreference と組み合わせることで CodeDeploy によるトラフィックシフティングが実現する。Canary10Percent10Minutes は最初に 10% を新バージョンへ転送し、10 分後に残り 90% を一括切り替えるカナリア方式であり、Alarms セクションに CloudWatch アラームを指定することで問題検知時の自動ロールバックが可能になる。 選択肢Bの Linear10PercentEvery10Minutes は 10% ずつ段階的にトラフィックを増加させる方式で、10 分ごとに 10%・20%・30%...と漸増するため、10 分後に残り 90% を一括切り替える要件とは異なる。 選択肢Cの Lambda コンソールでの手動加重ルーティング設定は SAM による自動化・再現性を損ない、CloudWatch アラームとの自動ロールバック連動も実現しないため要件を満たせない。 選択肢Dの API Gateway カナリアリリースはフロントエンドのリクエストルーティングを制御する機能であり、Lambda 関数バージョン間のトラフィックシフティングとは独立した仕組みで、SAM の DeploymentPreference が担う Lambda デプロイ要件を代替できない。