本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
此AWS::LanguageExtensions
轉換可增強 CloudFormation 範本中Fn::FindInMap
內部 函數的功能。
Fn::FindInMap
函數用於從 CloudFormation 範本 Mappings
區段中定義的映射擷取值。不過,標準Fn::FindInMap
函數有限制,例如無法處理遺失的映射,或使用內含一些內部函數的Fn::FindInMap
函數。
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
所有參數都可以是內部函數。
範例
下列範例示範如何在新增AWS::LanguageExtensions
轉換Fn::FindInMap
時定義 的欄位。
使用預設值
以下是在 Fn::FindInMap
函數中使用預設值的範例。
JSON
{
//...
"Transform": "AWS::LanguageExtensions",
//...
"Fn::FindInMap": [
"RegionMap",
{ "Ref": "AWS::Region" },
"InstanceType",
{ "DefaultValue": "t3.micro" }
]
//...
}
YAML
Transform: 'AWS::LanguageExtensions'
#...
!FindInMap
- 'RegionMap'
- !Ref 'AWS::Region'
- 'InstanceType'
- DefaultValue: t3.micro
#...
使用內部函數定義最上層金鑰
以下是使用 Fn::FindInMap
函數搭配內嵌於其中的 Fn::Split
Fn::Select
和 內部函數來定義最上層金鑰的範例。
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]
#...
支援的函數
您可以在 Fn::FindInMap:
增強的參數中使用以下函數:
-
Fn::Split
- 除非用於預設值,否則Fn::Split
必須與產生字串的內部函數搭配使用,例如Fn::Join
或Fn::Select
。
相關資源
如需示範如何使用Fn::FindInMap
內部 函數的詳細資訊和範例,請參閱 Fn::FindInMap。
如需 AWS::LanguageExtensions
轉換的詳細資訊,請參閱 AWS::LanguageExtensions 轉換程序。