Q82 — AWS SOA-C02 第1章
第 82/100 题 | ← 返回第1章
一家公司创建了一个AWS CloudFormation模板,其中包含AWS::EC2::Instance资源和一个自定义CloudFormation资源。该自定义CloudFormation资源是一个AWS Lambda函数,尝试在Amazon EC2实例上运行自动化任务。在测试过程中,Lambda函数失败,原因是Lambda函数在EC2实例启动完成前即开始执行。 以下哪项解决方案可解决此问题?
- A. 为自定义资源添加DependsOn属性,并在DependsOn属性中指定EC2实例。 ✓
- B. 更新自定义资源的服务令牌(Service Token),使其指向一个有效的Lambda函数。
- C. 更新Lambda函数,使用cfn-response模块向自定义资源发送响应。
- D. 使用Fn::If内建函数,在自定义资源运行前检查EC2实例是否存在。
正确答案: A. 为自定义资源添加DependsOn属性,并在DependsOn属性中指定EC2实例。
解析
AWS CloudFormation模板中资源的创建默认并行执行,若需确保特定顺序,需利用依赖关系。根据AWS官方文档,`DependsOn`属性可显式指定资源间的依赖,确保目标资源在依赖项创建完成后再执行。题目中自定义资源(Lambda)需在EC2实例启动后运行,添加`DependsOn`属性至自定义资源并指向EC2实例可解决时序问题。选项B涉及服务令牌配置,与资源启动顺序无关;选项C的`cfn-response`模块用于自定义资源响应处理,不直接影响依赖顺序;选项D的`Fn::If`适用于条件判断,无法确保资源创建顺序。选项A直接符合AWS推荐依赖管理方式。