AWS SAMを使用してLambda関数をデプロイしています。以下の要件を満たす設定をSAMテンプレートだけで実装したい場合、最適な設定はどれですか? ・新バージョンのリリース時に最初の5分間は10%のトラフィックのみを新バージョンに送る(カナリアデプロイ) ・CloudWatchアラームが発火した場合は自動ロールバックする
SAM テンプレートで AutoPublishAlias を指定するとバージョンとエイリアスが自動作成されます。DeploymentPreference で「Type: Canary10Percent5Minutes」などの戦略を指定し、Alarms に CloudWatch アラームを設定することで自動ロールバックが実現できます。SAM はこれらを CodeDeploy リソースへ自動変換するため、CodeDeploy リソースを手動定義する必要はありません。 選択肢A の Globals セクションで DeploymentType を指定する方式は、DeploymentPreference は Globals セクションではなく個々の Lambda 関数リソースに設定する必要があります。 選択肢C の CodeDeploy リソースと CodeDeployDeploymentGroup リソースを明示的に定義する方式は、SAM が自動変換するため冗長になります。 選択肢D の ProvisionedConcurrency を段階的に増やすカスタムリソースは、同時実行数を事前確保する機能であり、カナリアデプロイのようなトラフィック割合の段階的ルーティングとは無関係です。