AWS::Include
转换
使用 AWS::Include
转换(它是由 Amazon CloudFormation 托管的宏)可将插入样板文件内容到您的模板中。AWS::Include
转换可让您在 Amazon S3 存储桶中创建对模板代码段的引用。创建更改集或使用更改集更新 CloudFormation 堆栈,并且模板引用 AWS::Include
时,CloudFormation 会将指定文件的内容插入到转换在模板中的位置。AWS::Include
函数的功能类似于编程语言中的 include
、copy
或 import
指令。
例如,您可能会有一个要在一个或多个 CloudFormation 模板中重用的 Lambda 函数。
使用量
除了模板参数部分和模板版本字段以外,您可以在 CloudFormation 模板中的任意位置使用 AWS::Include
转换。例如,您可以在映射部分中使用 AWS::Include
。
模板顶层的语法
要在模板顶层的 Transform
部分中包含 AWS::Include
转换,请使用以下语法。
JSON
{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://
amzn-s3-demo-bucket
/MyFileName
.json" } } }
YAML
Transform: Name: 'AWS::Include' Parameters: Location: '
s3://amzn-s3-demo-bucket/MyFileName.yaml
'
将转换嵌入到模板中某个部分内的语法
要包含嵌入在一个部分中的转换,请使用 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
参数
位置
位置是 Amazon S3 URI,包含 S3 存储桶中的特定文件名。例如,s3://
。amzn-s3-demo-bucket
/MyFile.yaml
备注
在使用 AWS::Include
时,请记住以下注意事项:有关使用宏的一般注意事项,请参阅创建 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 存储桶名称。有关更多信息,请参阅跨区域复制。
示例
以下示例演示如何使用 AWS::Include
转换来执行等待条件句柄。
JSON 和 YAML 版本都使用了下面的等待条件代码段。将该文件保存为 single_wait_condition.yaml
,并将其存储在 S3 存储桶中。请将 amzn-s3-demo-bucket
替换为实际存储桶的名称。
WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'
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"