Fn::FindInMap enhancements - 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

パラメータ

DefaultValue

TopLevelKey および/または SecondLevelKeyMapName マップから見つからない場合に Fn::FindInMap が解決される値。このフィールドはオプションです。

変換中に有効な値に変換できる限り、すべてのパラメータ MapNameTopLevelKeySecondLevelKeyDefaultValue は組込み関数にすることができます。

次の例は、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 変換」を参照してください。