Q26 — AWS DOP-C02 第2章
第 26/100 問 | ← 第2章
ある企業が、API経由で受信した注文を処理するAWS Lambda関数を開発しました。同社は、CI/CDパイプラインの最終ステップとしてAWS CodeDeployを使用してLambda関数をデプロイしています。 DevOpsエンジニアは、デプロイ直後の数秒間に注文APIで一時的な障害が発生することに気づきました。調査の結果、この障害は、Lambda関数が呼び出される前にデータベースの変更が完全に反映されていなかったためであることが判明しました。 DevOpsエンジニアは、この問題をどのように解決すべきですか?
- A. AppSpecファイルにBeforeAllowTrafficフックを追加し、必要なデータベース変更が完了するまで待機・テストを行い、その後で新バージョンのLambda関数にトラフィックを流します。 ✓
- B. AppSpecファイルにAfterAllowTrafficフックを追加し、新バージョンのLambda関数が応答を開始する前に、保留中のデータベース変更が完了するまで待機させます。
- C. AppSpecファイルにBeforeInstallフックを追加し、Lambda関数の新バージョンをデプロイする前に、必要なデータベース変更が完了するまで待機・テストを行います。
- D. AppSpecファイルにValidateServiceフックを追加し、着信トラフィックをチェックし、データベースなどの関連サービスが準備完了でない場合はペイロードを拒否します。
正解: A. AppSpecファイルにBeforeAllowTrafficフックを追加し、必要なデータベース変更が完了するまで待機・テストを行い、その後で新バージョンのLambda関数にトラフィックを流します。
解説
AWS CodeDeployは、Lambda関数のデプロイ時にAppSpecファイルでデプロイライフサイクルフックを定義します。AWSドキュメントによると、CodeDeployのBeforeAllowTrafficフックは、トラフィックが新バージョンに切り替わる前にスクリプトまたはテストを実行し、新バージョンが準備完了であることを保証するために使用されます。本問では、データベース変更が完了していないために障害が発生しているため、トラフィック切り替え前に変更の伝搬を待つ必要があります。オプションAのBeforeAllowTrafficフックは、この段階でデータベース状態をチェックし、AWS推奨のベストプラクティスに合致します。他のオプションのフック(AfterAllowTraffic、BeforeInstall、ValidateService)は、トラフィック切り替え後に実行されるか、CodeDeploy標準フックの機能定義に適合していません。AWS CodeDeployアプリケーション仕様ファイルのライフサイクルイベント順序は、BeforeAllowTrafficがトラフィック切り替え前の最終チェックポイントであることを明確に示しています。