这是新的《Amazon CloudFormation 模板参考指南》。请更新您的书签和链接。有关开始使用 CloudFormation 的帮助,请参阅《Amazon CloudFormation 用户指南》https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/Welcome.html。
Fn::FindInMap enhancements
AWS::LanguageExtensions 转换增强了 CloudFormation 模板中 Fn::FindInMap 内置函数的功能。
标准 Fn::FindInMap 函数仅支持作为嵌套内置函数的 Fn::FindInMap 和 Ref。AWS::LanguageExtensions 转换可移除此限制,让您可使用更广泛的内置函数来定义 Fn::FindInMap 的参数。
注意
Fn::FindInMap 的 DefaultValue 参数不再需要 AWS::LanguageExtensions 转换。您可在任何 CloudFormation 模板中使用 DefaultValue。有关更多信息,请参阅 Fn::FindInMap。
声明
JSON
{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey"] }
如果需要为映射中找不到键时指定一个回退值,请包含一个 DefaultValue:
{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey", {"DefaultValue": "DefaultValue"}] }
YAML
完整函数名称的语法:
Fn::FindInMap: [MapName,TopLevelKey,SecondLevelKey]
短格式的语法:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
如果需要为映射中找不到键时指定一个回退值,请包含一个 DefaultValue:
完整函数名称的语法:
Fn::FindInMap: -MapName-TopLevelKey-SecondLevelKey- DefaultValue:DefaultValue
短格式的语法:
!FindInMap -MapName-TopLevelKey-SecondLevelKey- DefaultValue:DefaultValue
参数
借助 AWS::LanguageExtensions 转换,参数 MapName、TopLevelKey、SecondLevelKey 和 DefaultValue 都可单独成为内置函数,只要其能够在转换期间解析为有效值。
示例
以下示例演示了如何在添加 Fn::FindInMap 转换时在 AWS::LanguageExtensions 的参数中使用内置函数。
使用内置函数定义顶层键
以下示例使用 Fn::FindInMap 函数以及其中嵌入的 Fn::Select 和 Fn::Split 内置函数定义顶层键。
JSON
{ //... "Transform": "AWS::LanguageExtensions", //... "Fn::FindInMap": [ "MyMap", { "Fn::Select": [ 0, { "Fn::Split": [ "|", { "Ref": "InputKeys" } ] } ] }, "SecondKey" ] //... }
YAML
Transform: 'AWS::LanguageExtensions' #... !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey] #...
支持的函数
您可以在借助 AWS::LanguageExtensions 转换在 Fn::FindInMap 的参数中使用以下函数:
-
Fn::Split– 除非将其用作默认值,否则Fn::Split必须与生成字符串(例如Fn::Join或Fn::Select)的内置函数结合使用。
相关资源
有关如何使用 Fn::FindInMap 内置函数的更多信息和示例(包含 DefaultValue 参数),请参阅 Fn::FindInMap。
有关 AWS::LanguageExtensions 转换的更多信息,请参阅 AWS::LanguageExtensions 转换。