Q94 — AWS DOP-C02 第3章
第 94/100 問 | ← 第3章
ある企業が、AWS CodePipelineを用いてリリースパイプラインを自動化しています。パイプライン内でAWS CodeDeployが使用され、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関数をエラーで終了させ、CodeDeployの自動ロールバックをトリガーします。 ✓
- D. CodeDeploy AppSpecファイルにhooksセクションを追加します。AfterAllowTrafficライフサイクルイベントを使用してテストスクリプトを呼び出します。エラーが検出された場合、aws deploy stop-deployment CLIコマンドでデプロイを停止します。
正解: C. CodeDeploy AppSpecファイルにhooksセクションを追加します。AfterAllowTestTrafficライフサイクルイベントを使用して、テストスクリプトを実行するAWS Lambda関数を呼び出します。エラーが検出された場合、Lambda関数をエラーで終了させ、CodeDeployの自動ロールバックをトリガーします。
解説
最適な選択肢はCです。CodeDeploy AppSpecファイルにフックを追加し、AfterAllowTestTrafficライフサイクルイベントを利用してAWS Lambda関数を呼び出すことで、トラフィック移行前の検証を確実に行えます。テストが失敗した場合、Lambda関数がエラーを返すことでCodeDeployの自動ロールバック機能が起動し、安全かつ信頼性の高いデプロイが保証されます。この手法は、テストフローとロールバックメカニズムを効果的に統合します。