AWS::Include
转换
本主题介绍如何使用 AWS::Include
转换将样板文件内容插入到 CloudFormation 模板中。
AWS::Include
是一个 CloudFormation 宏,如果您在堆栈模板中引用了该宏,则会在您使用更改集创建或更新堆栈时在该转换在模板中的位置插入指定文件的内容。AWS::Include
函数的功能类似于编程语言中的 include
、copy
或 import
指令。
使用量
除模板参数部分和模板版本外,您可以在 CloudFormation 模板中的任意位置使用 AWS::Include
转换。例如,您可以在映射部分中使用 AWS::Include
。
模板顶层的语法
要在 CloudFormation 模板的顶层声明此转换,以作为 Transform
部分,请使用以下语法:
JSON
{ "Transform":{ "Name":"AWS::Include", "Parameters":{ "Location":"s3://
amzn-s3-demo-bucket
/MyFileName.json
" } }, "Resources":{...
} }
YAML
Transform: Name: 'AWS::Include' Parameters: Location: 's3://
amzn-s3-demo-bucket
/MyFileName.yaml
' Resources:...
将转换嵌入到模板中某个部分内的语法
要在 CloudFormation 模板的某个部分中声明此转换,请使用 Fn::Transform
内置函数和以下语法:
JSON
{ "Fn::Transform":{ "Name":"AWS::Include", "Parameters":{ "Location":"s3://
amzn-s3-demo-bucket
/MyFileName.json
" } } }
YAML
'Fn::Transform': Name: 'AWS::Include' Parameters: Location: s3://
amzn-s3-demo-bucket
/MyFileName.yaml
有关更多信息,请参阅 Fn::Transform。
参数
Location
位置是 Amazon S3 URI,包含 S3 存储桶中的特定文件名。例如,s3://
。amzn-s3-demo-bucket
/MyFile.yaml
注意事项
在使用 AWS::Include
时,请记住以下注意事项:有关使用宏的更多注意事项,请参阅《Amazon CloudFormation 用户指南》中的宏注意事项。
-
目前,我们支持 Amazon S3 URI,不支持其他 Amazon S3 格式(如 Amazon S3 ARN)。它必须是 Amazon S3 存储桶,而不是 GitHub 存储库等其他存储。
-
任何有权访问 Amazon S3 URL 的人都可以在其模板中包含该代码段。
-
模板代码段必须是有效的 JSON。
-
模板代码段必须是有效的键值对象,例如
"KeyName": "keyValue"
。 -
不能使用
AWS::Include
来引用同时也使用AWS::Include
的模板代码段。 -
如果代码段发生更改,堆栈不会自动获取这些更改。要获取这些更改,您必须使用更新的代码段更新堆栈。更新堆栈时,请确保所包含的代码段未在您不知情的情况下发生更改。要在更新堆栈前进行验证,请检查更改集。
-
创建模板和代码段时,您可以混用 YAML 和 JSON 模板语言。
-
目前,我们不支持为 YAML 代码段使用简写形式。
-
您可以提供具有
AWS::Include
的跨区域复制 Amazon S3 URI。确保在访问跨区域复制对象时检查 Amazon S3 存储桶名称。有关更多信息,请参阅《Amazon S3 用户指南》中的在区域内和跨区域复制对象。
示例
以下示例演示如何使用 AWS::Include
转换来执行等待条件句柄。将 amzn-s3-demo-bucket
替换为实际存储桶名称。
首先,在您的 S3 存储桶中保存一个名为 single_wait_condition.yaml
的 YAML 文件,其中应包含以下内容:
MyWaitCondition
: Type: AWS::CloudFormation::WaitCondition Properties: Handle:!Ref MyWaitHandle
Timeout:'4500'
然后,您可以用 JSON 或 YAML 格式引用此文件。
JSON
{ "Resources": { "MyWaitHandle": { "Type": "AWS::CloudFormation::WaitConditionHandle" }, "Fn::Transform": { "Name": "AWS::Include", "Parameters": { "Location": "s3://
amzn-s3-demo-bucket
/single_wait_condition.yaml" } } } }
YAML
Resources: MyWaitHandle: Type: AWS::CloudFormation::WaitConditionHandle 'Fn::Transform': Name: 'AWS::Include' Parameters: Location: "s3://
amzn-s3-demo-bucket
/single_wait_condition.yaml"
有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的在 CloudFormation 模板中创建等待条件。