

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*