Fn::FindInMap enhancements - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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 的解析值。此欄位為選用欄位。

只要能夠在轉換期間解析為有效值,MapNameTopLevelKeySecondLevelKey、和 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::SelectFn::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::FindInMap內建函數的詳細資訊和範例,請參閱〈〉。Fn::FindInMap

如需 AWS::LanguageExtensions 轉換的詳細資訊,請參閱 AWS::LanguageExtensions 轉換程序