あるチームはAWS Lambda関数をCodeDeployの`LambdaCanary10Percent5Minutes`デプロイ設定でデプロイしています。 新バージョンのLambdaには以下の要件があります。 - 起動前にDynamoDBテーブルとのスキーマ互換性検証が必要 - 10%のトラフィックシフト完了後に外部決済APIとのエンドツーエンド疎通確認が必要 - どちらの検証も失敗した場合は自動ロールバックを実行 appspec.ymlの設定として最適なものを選択してください。
CodeDeployのLambdaデプロイAppSpecはBeforeAllowTrafficとAfterAllowTrafficの2フックをサポートします。BeforeAllowTrafficはトラフィックシフト開始前に実行されるため、DBスキーマ互換性など前提条件の検証に最適です。AfterAllowTrafficはトラフィックシフト完了後に実行されるため、実際の本番環境での疎通確認に適しています。いずれかのフック関数が失敗(エラー返却または非ゼロ終了)した場合、CodeDeployは自動的にロールバックを実行します。 選択肢Aの(BeforeAllowTrafficフックのみ)は、両検証を1つのフック内で処理するため、段階的な検証ができません。 選択肢Cの(AfterAllowTrafficフックのみ)は、前提条件検証がトラフィックシフト後になるため、要件を満たしません。 選択肢Dの(手動承認アクション)は、自動ロールバックが実行されず、運用負荷が増加します。