這是新的 CloudFormation 範本參考指南。請更新您的書籤和連結。如需 CloudFormation 入門的說明,請參閱 AWS CloudFormation 使用者指南。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Fn::FindInMap
enhancements
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
Parameters
- 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 轉換。