这是新的《Amazon CloudFormation 模板参考指南》。请更新您的书签和链接。有关开始使用 CloudFormation 的帮助,请参阅《Amazon CloudFormation 用户指南》https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/Welcome.html。
AWS::LanguageExtensions 转换
本主题介绍如何使用 AWS::LanguageExtensions 转换来启用默认情况下不可用的其他函数和功能。
AWS::LanguageExtensions 转换是一个 CloudFormation 宏,如果您在堆栈模板中引用了该宏,则会在您使用更改集创建或更新堆栈时将该转换定义的任何内置函数更新为解析的值。
通过在 CloudFormation 模板中包含此转换,您可以使用 Fn::ForEach 等额外的功能,从而支持迭代等更高级的操作。您还可以在通常不允许使用内置函数的位置使用内置函数,例如在 Ref 和 Fn::GetAtt 函数中。
使用量
要使用 AWS::LanguageExtensions 转换,您必须在 CloudFormation 模板的顶层对其进行声明。AWS::LanguageExtensions 不能用作嵌入在任何其他模板部分中的转换。
该声明的值必须为文本字符串 AWS::LanguageExtensions。您无法使用参数或函数来指定转换值。
语法
要在 CloudFormation 模板中声明该转换,请使用以下语法:
JSON
{ "Transform":"AWS::LanguageExtensions", "Resources":{...} }
YAML
Transform: AWS::LanguageExtensions Resources:...
AWS::LanguageExtensions 转换是一个独立的声明,没有其他参数。
支持额外的函数
AWS::LanguageExtensions 转换支持以下额外的函数:
注意事项
使用 AWS::LanguageExtensions 转换时,请记住以下注意事项:
-
更新使用
AWS::LanguageExtensions转换的堆栈时,建议不要使用 CloudFormation 控制台中的使用现有模板选项或等效的命令行选项--use-previous-template。AWS::LanguageExtensions转换会在处理过程中将参数解析为字面值。当您使用--use-previous-template时,CloudFormation 会将此已处理的模板与旧字面值一起使用,从而阻止应用新的参数值和 Systems Manager 参数更新。请改为提供原始模板,以确保使用当前值重新解析参数。 -
仅在
AWS::LanguageExtensions转换中可用的内置函数模板中不支持短格式 YAML 语法。使用对这些函数的显式引用。例如,使用Fn::Length而不是!Length。 -
Amazon SAM CLI 目前不支持
AWS::LanguageExtensions转换的Fn::ForEach内置函数。 -
如果您使用多个转换,请使用列表格式。如果您使用自定义宏,请将 Amazon 提供的转换放在自定义宏之后。如果同时使用
AWS::LanguageExtensions和AWS::Serverless转换,则AWS::LanguageExtensions转换必须位于列表中的AWS::Serverless转换之前。 -
AWS::LanguageExtensions转换提供的函数和属性仅在模板的Resources、Conditions和Outputs部分中受支持。
示例
以下示例展示了如何使用 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
相关资源
有关更多示例,请参阅以下主题。
有关使用宏的一般信息,请参阅《Amazon CloudFormation 用户指南》中的 使用模板宏对 CloudFormation 模板执行自定义处理。