Q2 — AWS DOP-C02 第1章
第 2/100 問 | ← 第1章
DevOpsエンジニアが、EC2 Auto Scalingグループ内のAmazon EC2インスタンス群に対してAWS CodeDeployを実行しています。EC2 Auto Scalingと連携するCodeDeployデプロイメントグループは、CodeDeployDefault.OneAtATimeによるインプレースデプロイメントを実行するよう構成されています。進行中の新規デプロイメントにおいて、エンジニアは、全体のデプロイメントは成功したものの、インスタンスの約2/3が以前のアプリケーションリビジョンにロールバックされたことを発見しました。残りの3台のインスタンスは最新のアプリケーションリビジョンを実行しています。 この現象の原因として考えられるのは何ですか?
- A. 影響を受けた2台のインスタンスが新しいデプロイメントを取得できませんでした。
- B. 失敗したAfterInstallライフサイクルイベントフックにより、CodeDeployエージェントが影響を受けたインスタンス上で以前のバージョンへロールバックしました。
- C. 影響を受けた2台のインスタンスにCodeDeployエージェントがインストールされていません。
- D. 新規デプロイメントが完了する前にEC2 Auto Scalingが2台の新規インスタンスを起動し、それらに以前のバージョンがデプロイされました。 ✓
正解: D. 新規デプロイメントが完了する前にEC2 Auto Scalingが2台の新規インスタンスを起動し、それらに以前のバージョンがデプロイされました。
解説
AWS CodeDeployとEC2 Auto Scalingの統合において、デプロイメントグループの実行構成が「OneAtATime」(1台ずつ)に設定されている場合、デプロイ中にAuto Scalingがスケールアウトをトリガーして新規インスタンスを起動すると、その新規インスタンスは現在のCodeDeployデプロイメントに含まれません。Auto Scalingが使用する起動設定が依然として古いアプリケーションバージョンを参照しているため、新規インスタンスには自動的に古いバージョンがデプロイされます。一方、CodeDeployの現在のデプロイメントは既存のインスタンスのみを対象とするため、新規インスタンスはデプロイメントフローから除外されます。この現象は選択肢Dの説明と一致し、CodeDeployのデプロイメントロジックおよびAuto Scalingの動的スケーリングに関係しています。他の選択肢は、デプロイメント結果の状態と矛盾するか、あるいはインスタンスがデプロイ対象外となる理由を説明できません。