AWS::LanguageExtensions 转换 - AWS CloudFormation

AWS::LanguageExtensions 转换

AWS::LanguageExtensions 转换是一个 AWS CloudFormation 托管的宏,可让您使用内部函数和默认未包含在 AWS CloudFormation 中的其他功能。当模板引用 AWS::LanguageExtensions 并且您正在使用更改集创建或更新堆栈时,AWS CloudFormation 将转换定义的任何内部函数更新为其在模板中的解析值。在 AWS CloudFormation 模板中添加 AWS::LanguageExtensions 转换时,您可以使用内置函数作为 RefFn::GetAtt 的参数。

AWS::LanguageExtensions 转换支持以下函数和属性:

使用量

转换声明的值必须为文字字符串。您无法使用参数或函数来指定转换值。有关转换声明的示例,请参阅以下代码段:

模板顶层的语法

在模板的顶层使用 AWS::LanguageExtensions 转换。您不能将 AWS::LanguageExtensions 转换用作任何其他模板部分中的嵌入转换。

JSON

"Transform": "AWS::LanguageExtensions"

YAML

Transform: AWS::LanguageExtensions

参数

AWS::LanguageExtensions 转换不接受参数。

备注

使用 AWS::LanguageExtensions 转换时,请记住以下注意事项:

  • 如果使用不同的参数值更新堆栈,请不要在包含该转换的原始模板所在的位置使用 --use-previous-template 选项。在转换之前,在 UpdateStack 调用中使用原始模板。堆栈将使用新参数值进行更新。

  • 仅在 AWS::LanguageExtensions 转换中可用的内置函数模板中不支持短格式 YAML 语法。仅在 AWS::LanguageExtensions 转换中可用的内置函数的示例为 Fn::LengthFn::ToJsonString。使用对这些函数的显式引用。例如,使用 Fn::Length 而不是 !Length

  • 如果您使用多个转换,请使用列表格式。如果您使用自定义宏,请将 AWS 提供的转换放在自定义宏之后。如果同时使用 AWS::LanguageExtensionsAWS::Serverless 转换,则 AWS::LanguageExtensions 转换必须位于列表中的 AWS::Serverless 转换之前。

  • AWS::LanguageExtensions 转换提供的函数和属性仅在模板的 ResourcesConditionsOutputs 部分中受支持。

有关使用宏的更多信息,请参阅 创建 CloudFormation 宏定义

示例

以下示例展示如何使用 AWS::LanguageExtensions 转换来使用由转换定义的 Fn::Length 内部函数。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Parameters": { "QueueList": { "Type": "CommaDelimitedList" }, "QueueNameParam": { "Description": "Name for your SQS queue", "Type": "String" } }, "Resources": { "Queue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref": "QueueNameParam" }, "DelaySeconds": { "Fn::Length": { "Ref": "QueueList" } } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Transform: 'AWS::LanguageExtensions' Parameters: QueueList: Type: CommaDelimitedList QueueNameParam: Description: Name for your SQS queue Type: String Resources: Queue: Type: 'AWS::SQS::Queue' Properties: QueueName: !Ref QueueNameParam DelaySeconds: 'Fn::Length': !Ref QueueList