AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::Include 转换

您可以使用 AWS::Include 转换来处理与主 AWS CloudFormation 模板分开存储的模板代码段。指定 Name: 'AWS::Include'Location 参数时,Transform 键是表示代码段注入位置的占位符。在创建更改集使用更改集更新堆栈时,AWS CloudFormation 将这些代码段插入到您的主模板中。

您可能会有想在一个或多个 AWS CloudFormation 模板中重用的 Lambda 函数。AWS::Include 转换可让您创建对 Amazon S3 存储桶中某个转换代码段的引用。您可以在 AWS CloudFormation 模板的 Transform 函数中添加 AWS::IncludeAWS::Include 函数的功能类似于编程语言中的 includecopyimport 指令。

用量

除了模板参数部分和模板版本字段以外,您可以在 AWS CloudFormation 模板中的任意位置使用 AWS::Include 转换。例如,您可以在映射部分中使用 AWS::Include

模板顶层的语法

要在模板的顶层包含转换,请使用以下语法。

JSON

{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://MyAmazonS3BucketName/MyFileName.json" } } }

YAML

Transform: Name: 'AWS::Include' Parameters: Location: 's3://MyAmazonS3BucketName/MyFileName.yaml'

将转换嵌入到模板中某个部分内的语法

要包含嵌入在一个部分中的转换,请使用以下语法。

JSON

{ "Fn::Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://MyAmazonS3BucketName/MyFileName.json" } } }

YAML

'Fn::Transform': Name: 'AWS::Include' Parameters: Location: s3://MyAmazonS3BucketName/MyFileName.yaml

参数

位置

位置是 Amazon S3 URI,包含 S3 存储桶中的特定文件名。例如:s3://MyBucketName/MyFile.yaml

备注

使用 AWS::Include 时,请注意以下几点:

  • 仅在 AWS Lambda 可用的区域中才支持 AWS::Include。有关 Lambda 可用区域的列表,请参阅 http://docs.amazonaws.cn/general/latest/gr/rande.html#lambda_region

  • 目前,我们只支持 Amazon S3 URI,不支持其他 Amazon S3 格式 (如 Amazon S3 ARN)。它必须是 Amazon S3 存储桶,而不是 GitHub 存储库等其他存储。

  • 任何有权访问 Amazon S3 URL 的人都可以在其模板中包含该代码段。

  • 您的模板代码段必须是有效的 YAML 或有效的 JSON。

  • 模板代码段必须通过创建堆栈或更新堆栈等操作的验证检查。

  • AWS CloudFormation 先解析转换,然后再处理模板。生成的模板必须是有效的 JSON 或 YAML,并且不得超出模板大小限制。

  • 如果代码段发生更改,堆栈不会自动获取这些更改。要获取这些更改,您必须使用更新的代码段更新堆栈。更新堆栈时,请确保所包含的代码段未在您不知情的情况下发生更改。要在更新堆栈前进行验证,请检查更改集。

  • 使用更新回滚功能时,AWS CloudFormation 会使用原始模板的副本。即使包含的代码段发生更改,它也会回滚到原始模板。

  • 嵌套转换不起作用,因为我们不是以迭代方式处理转换的。

  • 创建模板和代码段时,您可以混用 YAML 和 JSON 模板语言。

  • 目前,我们不支持为 YAML 代码段使用简写形式。

  • 您可以在一个模板中使用多个转换。但不能同时在模板顶层和模板的某个部分中嵌入 AWS::Include 转换。

  • 您可以提供具有 AWS::Include 的跨区域复制 Amazon S3 URI。访问跨区域复制对象时,请务必检查 S3 存储桶的名称。有关更多信息,请参阅跨区域复制

示例

下面的示例演示如何使用 AWS::Include 转换来执行等待条件句柄。

JSON 和 YAML 版本都使用了下面的等待条件代码段。将该文件保存为 single_wait_condition.yaml,并将其存储在与 MyAmazonS3BucketName 同名的 S3 存储桶中。

WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'

JSON

{ "Resources": { "MyWaitHandle": { "Type": "AWS::CloudFormation::WaitConditionHandle" }, "Fn::Transform": { "Name": "AWS::Include", "Parameters": { "Location": "s3://MyAmazonS3BucketName/single_wait_condition.yaml" } } } }

YAML

Resources: MyWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle' 'Fn::Transform': Name: 'AWS::Include' Parameters: Location : "s3://MyAmazonS3BucketName/single_wait_condition.yaml"

本页内容: