Q31 — AWS DVA-C02 第2章
第 31/100 题 | ← 返回第2章
给定以下 AWS CloudFormation 模板: Description: Creates a new Amazon S3 bucket for shared content. Uses a random bucket name to avoid conflicts. Resources: ContentBucket: Type: AWS::S3::Bucket Outputs: ContentBucketName: Value: !Ref ContentBucket 在另一个 AWS CloudFormation 模板中引用该新创建的 Amazon S3 存储桶的最有效方式是什么?
- A. 在原始模板的 Outputs 部分添加 Export 声明,并在其他模板中使用 Fn::ImportValue。 ✓
- B. 在原始模板的 ContentBucket 资源中添加 Exported: true,并在其他模板中使用 ImportResource。
- C. 创建一个自定义 AWS CloudFormation 资源,该资源从第一个堆栈的 ContentBucket 资源获取存储桶名称。
- D. 使用 Fn::Include 将现有模板包含在其他模板中,并直接使用 ContentBucket 资源。
正确答案: A. 在原始模板的 Outputs 部分添加 Export 声明,并在其他模板中使用 Fn::ImportValue。
解析
在 AWS CloudFormation 中,跨堆栈引用资源的标准且最有效方式是:在源堆栈模板的 Outputs 部分使用 Export 为输出值命名,然后在目标堆栈模板中通过 Fn::ImportValue 引用该导出名称。选项 A 符合此最佳实践。选项 B 中的 Exported 属性不存在于 AWS::S3::Bucket 资源中;选项 C 的自定义资源不必要且复杂;选项 D 的 Fn::Include 并非 CloudFormation 内置函数,且不支持跨堆栈引用。因此 A 正确。