本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Fn::FindInMap
enhancements
轉AWS::LanguageExtensions
換增強了模板中Fn::FindInMap
CloudFormation 內在函數的功能。
該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::Select
和Fn::Split
內建Fn::FindInMap
函數的函數來定義頂層索引鍵的範例。
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 轉換程序。