

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# `Fn::FindInMap enhancements`
<a name="intrinsic-function-reference-findinmap-enhancements"></a>

`AWS::LanguageExtensions` 変換は、CloudFormation テンプレートの `Fn::FindInMap` 組み込み関数の機能を強化します。

`Fn::FindInMap` 関数は、CloudFormation テンプレートの `Mappings` セクションで定義されたマッピングから値を取得するために使用されます。ただし、標準の `Fn::FindInMap` 関数には、欠落しているマッピングを処理できない、またはいくつかの組み込み関数が内部に組み込まれている `Fn::FindInMap` 関数を使用できないなどの制限があります。

`AWS::LanguageExtensions` 変換では、以下の機能強化を導入することで、これらの制限に対処します。
+ **デフォルト値のサポート** — マッピングが見つからない場合に返されるデフォルト値を指定できます。
+ **組み込み関数のサポート** – 標準の `Fn::FindInMap` 関数よりも幅広い組み込み関数を使用して、`Fn::FindInMap` のフィールドを定義することもできます。

## 宣言
<a name="intrinsic-function-reference-findinmap-enhancements-declaration"></a>

### JSON
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.json"></a>

```
{ "Fn::FindInMap" : [
    "MapName",
    "TopLevelKey",
    "SecondLevelKey",
    {"DefaultValue": "DefaultValue"}
  ]
}
```

### YAML
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.yaml"></a>

完全関数名の構文:

```
Fn::FindInMap:
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

短縮形の構文:

```
!FindInMap
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

## パラメータ
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

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

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

## 例
<a name="w2aac28c16c20c15"></a>

次の例は、`AWS::LanguageExtensions` 変換を追加するときに `Fn::FindInMap` のフィールドを定義する方法を示しています。

### デフォルト値の使用
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

`Fn::FindInMap` 関数のデフォルト値の使用例を次に示します。

#### JSON
<a name="intrinsic-function-reference-findinmap-default-value-example.json"></a>

```
{
  //...
    "Transform": "AWS::LanguageExtensions",
    //...
    "Fn::FindInMap": [
      "RegionMap",
      { "Ref": "AWS::Region" },
      "InstanceType",
      { "DefaultValue": "t3.micro" }
    ]
  //...
}
```

#### YAML
<a name="intrinsic-function-reference-findinmap-default-value-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap 
        - 'RegionMap'
        - !Ref 'AWS::Region'
        - 'InstanceType'
        - DefaultValue: t3.micro
#...
```

#### 最上位のキーを定義するための組み込み関数の使用
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

以下は、最上位のキーを定義するために、`Fn::Select` と `Fn::Split` 組み込み関数が内部に組み込まれている `Fn::FindInMap` 関数を使用する例です。

##### JSON
<a name="intrinsic-function-reference-findinmap-enhancement-example.json"></a>

```
{
  //...
  "Transform": "AWS::LanguageExtensions",
  //...
      "Fn::FindInMap": [
        "MyMap",
        {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                "|",
                { "Ref": "InputKeys" }
              ]
            }
          ]
        },
        "SecondKey"
      ]
//...
}
```

##### YAML
<a name="intrinsic-function-reference-findinmap-enhance-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey]
#...
```

## サポートされている関数
<a name="intrinsic-function-reference-findinmap-enhancements-supported-functions"></a>

`Fn::FindInMap:` 拡張機能のパラメータで以下の関数を使用できます。
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split`` - デフォルト値として使用しない限り、`Fn::Split` は、``Fn::Join`` または ``Fn::Select`` などの文字列を生成する組み込み関数と組み合わせて使用する必要があります。
+ ``Ref``

## 関連リソース
<a name="w2aac28c16c20c19"></a>

`Fn::FindInMap` 組み込み関数を使用する方法を示す詳細と例については、「[`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)」を参照してください。

`AWS::LanguageExtensions` 変換の詳細については、「[`AWS::LanguageExtensions` 変換](transform-aws-languageextensions.md)」を参照してください。