一位DevOps工程师必须使用AWS Control Tower管理账户和CloudFormation StackSets为尚未启用Amazon GuardDuty的账户启用GuardDuty。为避免StackSets部署失败,应如何设计CloudFormation模板?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 添加一个调用Lambda函数的CloudFormation自定义资源;让Lambda检查GuardDuty是否已启用,并仅在未激活时才启用它。.
为什么这是答案
正确答案是使用CloudFormation自定义资源调用Lambda函数。这是因为CloudFormation本身没有内置机制来直接检查GuardDuty的启用状态并根据该状态有条件地执行操作。Lambda函数可以利用AWS SDK检查GuardDuty的DetectorId,如果不存在,则创建新的GuardDuty检测器。这种方法允许在部署StackSets时实现动态、有条件的资源配置,避免因尝试在已启用GuardDuty的账户中重复启用而导致的部署失败。 其他选项不正确的原因: CloudFormation的Conditions部分基于模板参数或映射值进行评估,无法直接查询AWS账户的实时服务状态。 Fn::GetAtt用于获取已创建资源的属性,不能用于在资源创建前检查服务状态。 手动整理账户ID列表不符合DevOps的自动化原则,且Fn::ImportValue用于导入其他堆栈的输出值,不适用于此场景。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡