Q36 — AWS DOP-C02 第3章
第 36/100 問 | ← 第3章
ある企業は、AWS Control Towerを使用してアプリケーションのAWSアカウントを管理しています。各アプリケーションチームは、自身のAWSアカウントの保護を担当しています。 DevOpsエンジニアは、アプリケーションチームがまだAmazon GuardDutyを有効化していないAWSアカウントに対してGuardDutyを有効化する必要があります。DevOpsエンジニアは、AWS Control Towerの管理アカウントからAWS CloudFormation StackSetsを使用しています。 DevOpsエンジニアは、StackSets展開中に障害が発生しないようにCloudFormationテンプレートをどのように構成すべきでしょうか?
- A. AWS Lambda関数を呼び出すCloudFormationカスタムリソースを作成します。アカウントでGuardDutyがまだ有効化されていない場合、Lambda関数を条件付きでGuardDutyを有効化するように構成します。 ✓
- B. CloudFormationテンプレートのConditionsセクションを使用して、GuardDutyがまだ有効化されていないアカウントでGuardDutyを有効化します。
- C. CloudFormationのFn::GetAtt内部関数を使用してGuardDutyが有効化されているかどうかを確認します。GuardDutyがまだ有効化されていない場合、CloudFormationテンプレートのResourcesセクションでGuardDutyを有効化します。
- D. 手動でGuardDutyが有効化されていないAWSアカウントIDのリストを特定します。CloudFormationのFn::ImportValue内部関数を使用して、このアカウントIDリストをCloudFormationテンプレートにインポートし、リストに記載されたAWSアカウントの展開をスキップします。
正解: A. AWS Lambda関数を呼び出すCloudFormationカスタムリソースを作成します。アカウントでGuardDutyがまだ有効化されていない場合、Lambda関数を条件付きでGuardDutyを有効化するように構成します。
解説
この問題は、複数のアカウントでAmazon GuardDutyを安全に展開するためのAWS CloudFormation StackSetsの使用方法を問うものです。AWSドキュメントによると、実行時ステータスに基づいてリソースを動的に作成する必要がある場合、カスタムリソースを通じて条件付きロジックを実装する必要があります。選択肢Aでは、Lambda関数がターゲットアカウントのGuardDutyアクティベーション状態をリアルタイムで検出しつつ、未有効化の場合にのみ展開動作を実行するため、重複有効化によるAPI競合エラーを回避します。選択肢BのConditions文はリソースのリアルタイム状態を取得できないため不適切です。選択肢CのFn::GetAtt関数はGuardDuty構成状態を取得することができません。選択肢Dの静的リストは、アカウント環境の変化に動的に対応できません。AWS公式ドキュメントでは、このような動的展開シナリオにはカスタムリソースの使用が推奨されています。