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
および/またはSecondLevelKey
がMapName
マップから見つからない場合に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 変換」を参照してください。