AWS::LanguageExtensions
转换
AWS::LanguageExtensions
转换是一个 AWS CloudFormation 托管的宏,可让您使用内部函数和默认未包含在 AWS CloudFormation 中的其他功能。当模板引用 AWS::LanguageExtensions
并且您正在使用更改集创建或更新堆栈时,AWS CloudFormation 将转换定义的任何内部函数更新为其在模板中的解析值。在 AWS CloudFormation 模板中添加 AWS::LanguageExtensions
转换时,您可以使用内置函数作为 Ref 和 Fn::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::Length
和Fn::ToJsonString
。使用对这些函数的显式引用。例如,使用Fn::Length
而不是!Length
。 -
如果您使用多个转换,请使用列表格式。如果您使用自定义宏,请将 AWS 提供的转换放在自定义宏之后。如果同时使用
AWS::LanguageExtensions
和AWS::Serverless
转换,则AWS::LanguageExtensions
转换必须位于列表中的AWS::Serverless
转换之前。 -
AWS::LanguageExtensions
转换提供的函数和属性仅在模板的Resources
、Conditions
和Outputs
部分中受支持。
有关使用宏的更多信息,请参阅 创建 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