

這是新的 *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`函數僅支援 `Fn::FindInMap`和 `Ref`做為巢狀內部函數。`AWS::LanguageExtensions` 轉換會移除此限制，讓您使用更廣泛的內部函數來定義 的參數`Fn::FindInMap`。

**注意**  
的 `DefaultValue` 參數`Fn::FindInMap`不再需要`AWS::LanguageExtensions`轉換。您可以在任何 CloudFormation 範本`DefaultValue`中使用 。如需詳細資訊，請參閱[`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)。

## 宣告
<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`：

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

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

完整函式名稱的語法：

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

短格式的語法：

```
!FindInMap [ {{MapName}}, {{TopLevelKey}}, {{SecondLevelKey}} ]
```

如果您想要在映射中找不到索引鍵時指定備用值，請包含 `DefaultValue`：

完整函式名稱的語法：

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

短格式的語法：

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

## Parameters
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

透過 `AWS::LanguageExtensions` 轉換，參數 `MapName`、`SecondLevelKey`、 `TopLevelKey`和 `DefaultValue`可以各自為內部函數，只要在轉換期間解析為有效值即可。

## 範例
<a name="w2aac28c16c20c13"></a>

下列範例示範當您新增`AWS::LanguageExtensions`轉換`Fn::FindInMap`時，如何在 的參數中使用內部函數。

### 使用內建函數來定義頂層金鑰
<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`搭配 `AWS::LanguageExtensions`轉換：
+ ``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="w2aac28c16c20c17"></a>

如需示範如何使用 `Fn::FindInMap` 內部函數的詳細資訊和範例，包括 `DefaultValue` 參數，請參閱 [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)。

如需 `AWS::LanguageExtensions` 轉換的詳細資訊，請參閱 [`AWS::LanguageExtensions` 轉換程序](transform-aws-languageextensions.md)。