Q97 — AWS DOP-C02 第1章
第 97/100 問 | ← 第1章
ある企業が、AWS CodePipeline を使用してソフトウェアリリースパイプラインの自動化を進めています。AWS CodeDeploy がパイプライン内で使用され、Amazon Elastic Container Service (Amazon ECS) へのアプリケーションデプロイメントにブルー/グリーンデプロイメントモデルが採用されています。同社は、トラフィックをグリーン環境に切り替える前に、テストスクリプトを実行してグリーン環境のアプリケーションを検証したいと考えています。これらのスクリプトは5分以内に完了する必要があります。テスト中にエラーが検出された場合、アプリケーションは自動的にロールバックされる必要があります。
- A. ソースステージとデプロイステージの間に、CodePipeline に新しいステージを追加します。AWS CodeBuild を使用して実行環境を作成し、buildspec ファイル内のコマンドでテストスクリプトを呼び出します。エラーが検出された場合は、aws deploy stop-deployment コマンドを使用してデプロイを停止します。
- B. ソースステージとデプロイステージの間に、CodePipeline に新しいステージを追加します。このステージで、テストスクリプトを実行する AWS Lambda 関数を呼び出します。エラーが検出された場合は、aws deploy stop-deployment コマンドを使用してデプロイを停止します。
- C. CodeDeploy の AppSpec ファイルに hooks セクションを追加します。AfterAllowTestTraffic ライフサイクルイベントを使用して、テストスクリプトを実行する AWS Lambda 関数を呼び出します。エラーが検出された場合、Lambda 関数をエラー終了させることでロールバックを開始します。 ✓
- D. CodeDeploy の AppSpec ファイルに hooks セクションを追加します。AfterAllowTraffic ライフサイクルイベントを使用してテストスクリプトを呼び出します。エラーが検出された場合、aws deploy stop-deployment CLI コマンドを使用してデプロイを停止します。
正解: C. CodeDeploy の AppSpec ファイルに hooks セクションを追加します。AfterAllowTestTraffic ライフサイクルイベントを使用して、テストスクリプトを実行する AWS Lambda 関数を呼び出します。エラーが検出された場合、Lambda 関数をエラー終了させることでロールバックを開始します。
解説
AWS CodeDeploy のブルー/グリーンデプロイメントでは、AppSpec ファイル内の hooks を使用してライフサイクルイベントを定義します。AWS ドキュメントによると、AfterAllowTestTraffic イベントは、トラフィックをグリーン環境に切り替える直前に発生し、検証テストを実行できます。この段階で Lambda を呼び出してテストスクリプトを実行し、エラー終了コードを返すと、CodeDeploy は自動的にデプロイをロールバックします。選択肢 C はこのメカニズムを正しく活用しており、他の選択肢は適切なライフサイクルイベントを使用していないか、外部コマンドによるデプロイ停止に依存しており、自動ロールバック要件を満たしません。