Q63 — AWS SAP-C02 第2章
第 63/75 問 | ← 第2章
Q213. ある企業が、Amazon EC2 Auto Scalingグループ内のAmazon EC2インスタンスで実行されるアプリケーションを運用しています。同社はAWS CodePipelineを用いてアプリケーションをデプロイしています。Auto Scalingグループ内で実行されるインスタンスは、スケーリングイベントにより常に変化しています。新しいアプリケーションコードのバージョンをデプロイする際、同社は対象となる新しいEC2インスタンスにAWS CodeDeployエージェントをインストールし、それらインスタンスをCodeDeployデプロイメントグループに関連付けます。アプリケーションは今後24時間以内に本番リリース予定です。ソリューションズアーキテクトは、運用オーバーヘッドを最小限に抑えつつアプリケーションのデプロイプロセスを自動化するため、何を推奨すべきでしょうか?
- A. 新しいEC2インスタンスがAuto Scalingグループに起動された際にAWS Lambda関数を呼び出すよう、Amazon EventBridge(Amazon CloudWatch Events)を設定します。Lambda関数には、EC2インスタンスをCodeDeployデプロイメントグループに関連付ける処理を実装します。
- B. 新規コードのデプロイ前にAmazon EC2 Auto Scalingの操作を一時停止するスクリプトを作成します。デプロイ完了後、新しいAMIを作成し、Auto Scalingグループの起動テンプレートを更新して新AMIを起動時に使用するように設定します。その後、Amazon EC2 Auto Scalingの操作を再開します。
- C. 新規コードを含む新しいAMIを作成するAWS CodeBuildプロジェクトを作成します。CodeBuildを設定してAuto Scalingグループの起動テンプレートを新AMIに更新し、Amazon EC2 Auto Scalingのインスタンス更新操作を実行します。
- D. CodeDeployエージェントが事前にインストール済みの新しいAMIを作成します。Auto Scalingグループの起動テンプレートをこの新AMIを使用するよう設定します。また、CodeDeployデプロイメントグループを個々のEC2インスタンスではなく、Auto Scalingグループ自体と関連付けます。 ✓
正解: D. CodeDeployエージェントが事前にインストール済みの新しいAMIを作成します。Auto Scalingグループの起動テンプレートをこの新AMIを使用するよう設定します。また、CodeDeployデプロイメントグループを個々のEC2インスタンスではなく、Auto Scalingグループ自体と関連付けます。
解説
選択肢Aでは、Amazon EventBridge(Amazon CloudWatch Events)を活用して新規EC2インスタンス起動時にAWS Lambda関数を呼び出す方法が提案されています。しかし、これはデプロイプロセスに追加の複雑さをもたらし、運用オーバーヘッドを増大させます。 選択肢Bでは、新規コードデプロイ前にAuto Scaling操作を一時停止し、新AMIを作成・適用した後に操作を再開する方法が示されています。しかしこの手法は、頻繁にスケーリングが発生する環境では不適切であり、毎回手動介入が必要になるため、運用負荷が高くなります。 選択肢Cでは、AWS CodeBuildを用いて新AMIを作成し、起動テンプレートを更新する方法が提案されています。これには追加の管理オーバーヘッドが伴い、頻繁なスケーリングが発生する環境では非効率です。 したがって、選択肢Dが最も適切な解決策です。CodeDeployエージェントが事前にインストールされた新AMIを作成し、Auto Scalingグループの起動テンプレートをそのAMIへ更新するとともに、CodeDeployデプロイメントグループを個々のEC2インスタンスではなくAuto Scalingグループ全体と関連付けることで、デプロイプロセスが簡素化され、運用オーバーヘッドが最小限に抑えられます。また、新規起動されるすべてのインスタンスは、あらかじめCodeDeployエージェントがインストール済みであり、正しいデプロイメントグループと関連付けられた状態で起動されます。