

Ini adalah *Panduan Referensi CloudFormation Template* baru. Harap perbarui bookmark dan tautan Anda. Untuk bantuan memulai CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Fungsi intrinsik `Fn::FindInMap` mengembalikan nilai yang sesuai dengan kunci dalam peta dua tingkat yang dideklarasikan di bagian. `Mappings`

## Pernyataan
<a name="w2aac24c25b5"></a>

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

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

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

Sintaks untuk nama fungsi penuh:

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

Sintaks untuk bentuk pendek:

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

**catatan**  
Anda tidak dapat me-nest dua instans dari dua fungsi dalam bentuk singkat.

## Parameter
<a name="w2aac24c25b7"></a>

MapName  <a name="MapName"></a>
Nama logis dari pemetaan dinyatakan di bagian Pemetaan yang berisi kunci dan nilai.

TopLevelKey  <a name="TopLevelKey"></a>
Nama kunci tingkat atas. Nilainya adalah daftar pasangan nilai kunci.

SecondLevelKey  <a name="SecondLevelKey"></a>
Nama kunci tingkat kedua, yang diatur ke salah satu kunci dari daftar yang ditetapkan untuk `TopLevelKey`.

## Nilai yang dikembalikan
<a name="w2aac24c25b9"></a>

Nilai yang ditetapkan untuk`SecondLevelKey`.

## Contoh
<a name="intrinsic-function-reference-findinmap-examples"></a>

Contoh berikut menunjukkan cara menggunakan fungsi `Fn::FindInMap`.

**Topics**
+ [Gunakan Fn::FindInMap dengan nilai khusus wilayah](#intrinsic-function-reference-findinmap-region-example)
+ [Gunakan Fn::FindInMap untuk konfigurasi khusus lingkungan](#intrinsic-function-reference-findinmap-environment-example)

### Gunakan Fn::FindInMap dengan nilai khusus wilayah
<a name="intrinsic-function-reference-findinmap-region-example"></a>

Contoh berikut menunjukkan cara menggunakan `Fn::FindInMap` dalam template yang mencakup dua pemetaan: `AWSInstanceType2Arch` dan. `AWSRegionArch2AMI` Ini juga mencakup `InstanceType` parameter yang memungkinkan Anda memilih antara `t3.micro` dan`t4g.nano`. Defaultnya adalah`t3.micro`, tetapi ini dapat diganti selama pembuatan tumpukan. 

`Fn::FindInMap`pertama-tama menentukan arsitektur (`HVM64`atau`ARM64`) berdasarkan jenis instance yang dipilih, dan kemudian mencari ID AMI yang benar untuk arsitektur tersebut saat ini Wilayah AWS. 

**catatan**  
AMI yang IDs ditunjukkan dalam contoh ini adalah placeholder untuk tujuan demonstrasi. Jika memungkinkan, pertimbangkan untuk menggunakan referensi dinamis ke AWS Systems Manager parameter sebagai alternatif untuk `Mappings` bagian tersebut. Untuk menghindari memperbarui semua template Anda dengan ID baru setiap kali AMI yang ingin Anda gunakan berubah, gunakan AWS Systems Manager parameter untuk mengambil ID AMI terbaru saat tumpukan dibuat atau diperbarui. Versi terbaru yang umum digunakan juga AMIs tersedia sebagai parameter publik di Systems Manager. Untuk informasi selengkapnya, lihat [Mendapatkan nilai yang disimpan di layanan lain menggunakan referensi dinamis](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html). 

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

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "InstanceType": {
      "Description": "The EC2 instance type",
      "Type": "String",
      "AllowedValues": [
        "t3.micro",
        "t4g.nano"
      ],
      "Default": "t3.micro"
    }
  },
  "Mappings": {
    "AWSInstanceType2Arch": {
      "t3.micro": {
        "Arch": "HVM64"
      },
      "t4g.nano": {
        "Arch": "ARM64"
      }
    },
    "AWSRegionArch2AMI": {
      "us-east-1" : { 
        "HVM64" : "{{ami-12345678901234567}}", "ARM64" : "{{ami-23456789012345678}}" 
      },
      "us-west-1" : { 
        "HVM64" : "{{ami-34567890123456789}}", "ARM64" : "{{ami-45678901234567890}}"
      },
      "eu-west-1" : { 
        "HVM64" : "{{ami-56789012345678901}}", "ARM64" : "{{ami-67890123456789012}}" 
      },
      "ap-southeast-1" : { 
        "HVM64" : "{{ami-78901234567890123}}", "ARM64" : "{{ami-89012345678901234}}" 
      },
      "ap-northeast-1" : { 
        "HVM64" : "{{ami-90123456789012345}}", "ARM64" : "{{ami-01234567890123456}}" 
      }
    }
  },
  "Resources" : {
    "MyEC2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "InstanceType" : { "Ref": "InstanceType" },
        "ImageId" : {
          "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ]}]
        }
      }
    }
  }
}
```

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

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  InstanceType:
    Description: The EC2 instance type
    Type: String
    AllowedValues:
      - t3.micro
      - t4g.nano
    Default: t3.micro
Mappings: 
  AWSInstanceType2Arch:
    t3.micro:
      Arch: HVM64
    t4g.nano:
      Arch: ARM64
  AWSRegionArch2AMI:
    us-east-1: 
      HVM64: {{ami-12345678901234567}}
      ARM64: {{ami-23456789012345678}}
    us-west-1: 
      HVM64: {{ami-34567890123456789}}
      ARM64: {{ami-45678901234567890}}
    eu-west-1: 
      HVM64: {{ami-56789012345678901}}
      ARM64: {{ami-67890123456789012}}
    ap-southeast-1: 
      HVM64: {{ami-78901234567890123}}
      ARM64: {{ami-89012345678901234}}
    ap-northeast-1: 
      HVM64: {{ami-90123456789012345}}
      ARM64: {{ami-01234567890123456}}
Resources: 
  myEC2Instance: 
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType
      ImageId:
        Fn::FindInMap:
        - AWSRegionArch2AMI
        - Ref: AWS::Region
        - Fn::FindInMap:
          - AWSInstanceType2Arch
          - Ref: InstanceType
          - Arch
```

### Gunakan Fn::FindInMap untuk konfigurasi khusus lingkungan
<a name="intrinsic-function-reference-findinmap-environment-example"></a>

Contoh berikut menunjukkan bagaimana menggunakan `Fn::FindInMap` untuk template dengan `Mappings` bagian yang berisi peta tunggal,`SecurityGroups`. Ini juga berisi `EnvironmentType` parameter yang memungkinkan Anda menentukan apakah lingkungan tersebut `Dev` atau`Prod`. Defaultnya `Dev` tetapi dapat diganti selama pembuatan tumpukan.

`Fn::FindInMap`mengembalikan yang sesuai `SecurityGroupIds` berdasarkan `EnvironmentType` parameter. `Fn::Split`kemudian membagi string grup keamanan yang dipisahkan koma IDs ke dalam daftar, yang merupakan format yang diharapkan untuk. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids)

Jika Anda menerapkan tumpukan ini dengan `EnvironmentType` set to`Dev`, `SecurityGroupIds` for `EC2Instance` akan menjadi`sg-12345678`. Jika Anda mengatur `EnvironmentType` ke`Prod`, itu akan menggunakan `sg-abcdef01` dan`sg-ghijkl23`.

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

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters":{
    "EnvironmentType":{
      "Description":"The environment type (Dev or Prod)",
      "Type":"String",
      "Default":"Dev",
      "AllowedValues":[
        "Dev",
        "Prod"
      ]
    }
  },
  "Mappings":{
    "SecurityGroups":{
      "Dev":{
        "SecurityGroupIds":"{{sg-12345678}}"
      },
      "Prod":{
        "SecurityGroupIds":"{{sg-abcdef01}},{{sg-ghijkl23}}"
      }
    }
  },
  "Resources":{
    "Ec2Instance":{
      "Type":"AWS::EC2::Instance",
      "Properties":{
        "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
        "InstanceType": "t2.micro",
        "SecurityGroupIds":{
          "Fn::Split":[
            ",",
            {
              "Fn::FindInMap":[
                "SecurityGroups",
                {
                  "Ref":"EnvironmentType"
                },
                "SecurityGroupIds"
              ]
            }
          ]
        }
      }
    }
  }
}
```

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

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  EnvironmentType:
    Description: The environment type (Dev or Prod)
    Type: String
    Default: Dev
    AllowedValues:
      - Dev
      - Prod
Mappings:
  SecurityGroups:
    Dev:
      SecurityGroupIds: {{sg-12345678}}
    Prod:
      SecurityGroupIds: {{sg-abcdef01}},{{sg-ghijkl23}}
Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
      InstanceType: t2.micro
      SecurityGroupIds:
        Fn::Split:
          - ","
          - Fn::FindInMap: [ SecurityGroups, !Ref EnvironmentType, SecurityGroupIds ]
```

## Fungsi yang didukung
<a name="w2aac24c25c13"></a>

Anda dapat menggunakan fungsi berikut di fungsi `Fn::FindInMap`:
+ `Fn::FindInMap`
+ `Ref`

## Sumber daya terkait
<a name="w2aac24c25c15"></a>

Untuk menggunakan fungsi intrinsik lainnya atau nilai default dalam suatu `Fn::FindInMap` fungsi, Anda harus mendeklarasikan `AWS::LanguageExtensions` transformasi dalam template Anda. Untuk informasi selengkapnya, lihat [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md).

Topik terkait ini dapat membantu saat Anda mengembangkan templat yang menggunakan `Fn::FindInMap` fungsi tersebut.
+ [`Fn::Sub`](intrinsic-function-reference-sub.md)
+ [CloudFormationMappingssintaks template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html) di *AWS CloudFormation Panduan Pengguna*