本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Fn::FindInMap
enhancements
在 Fn::FindInMap
模板中添加 Amazon CloudFormation 转换时,您可以使用内部函数定义 AWS::LanguageExtensions
的字段。如果找不到映射,也可以使用新的可选字段返回默认值。
有关 AWS::LanguageExtensions
转换的更多信息,请参阅 AWS::LanguageExtensions 转换。
有关 Fn::FindInMap
内部函数的更多信息,请参阅 Fn::FindInMap。
声明
JSON
{ "Fn::FindInMap" : [ "
MapName
", "TopLevelKey
", "SecondLevelKey
", {"DefaultValue": "DefaultValue
"} ] }
YAML
完整函数名称的语法:
Fn::FindInMap:
- MapName
- TopLevelKey
- SecondLevelKey
- DefaultValue:DefaultValue
短格式的语法:
!FindInMap
- MapName
- TopLevelKey
- SecondLevelKey
- DefaultValue:DefaultValue
参数
- DefaultValue
-
如果在
MapName
映射上找不到TopLevelKey
和/或SecondLevelKey
,则Fn::FindInMap
将解析为的值。此字段为可选项。
所有参数 MapName
、TopLevelKey
、SecondLevelKey
和 DefaultValue
都可以是内部函数,只要其能够在转换期间解析为有效值。
示例
以下是使用内部函数定义顶级密钥的示例:
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] #...
以下是使用默认值的示例:
JSON
{ //... "Transform": "AWS::LanguageExtensions", //... "Fn::FindInMap": [ "InstanceConfiguration", { "Ref": "AWS::Region" }, "Type", { "DefaultValue": "m5.small" } ] //... }
YAML
Transform: 'AWS::LanguageExtensions' #... !FindInMap - 'InstanceConfiguration' - !Ref 'AWS::Region' - 'Type' - DefaultValue: m5.small #...
支持的函数
您可以在 Fn::FindInMap:
增强参数中使用以下函数:
-
Fn::FindInMap
-
Fn::Join
-
Fn::Sub
-
Fn::If
-
Fn::Select
-
Fn::Length
-
Fn::ToJsonString
-
Fn::Split
– 除非将其用作默认值,否则Fn::Split
必须与生成字符串(例如Fn::Join
或Fn::Select
)的内部函数结合使用。 -
Ref