全部产品
Search
文档中心

Resource Orchestration Service:Fn::FindInMap

更新时间:Jun 26, 2025

Fungsi bawaan Fn::FindInMap mengembalikan nilai yang sesuai dengan kunci dalam pemetaan dua tingkat yang dideklarasikan di bagian Mappings.

Deklarasi

  • JSON

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

    • Sintaks untuk nama fungsi lengkap:

      Fn::FindInMap:
        - MapName
        - TopLevelKey
        - SecondLevelKey
    • Sintaks untuk bentuk singkat:

      !FindInMap [MapName,TopLevelKey,SecondLevelKey]

Parameter

  • MapName: Nama pemetaan yang dideklarasikan di bagian Mappings. Untuk informasi lebih lanjut, lihat Mappings.

  • TopLevelKey: Kunci tingkat atas. Nilainya terdiri dari pasangan kunci-nilai.

  • SecondLevelKey: Kunci tingkat kedua. Nilainya adalah string atau angka.

Nilai pengembalian

Nilai yang ditetapkan ke parameter SecondLevelKey.

Contoh

Sebagai contoh, Anda ingin menentukan properti ImageId saat membuat sumber daya bernama WebServer. Dalam hal ini, Anda dapat menggunakan regionParam di bagian Parameters untuk menentukan wilayah dan RegionMap di bagian Mappings untuk menentukan pemetaan ImageId di setiap wilayah. Dengan cara ini, Fn::FindInMap memeriksa pemetaan ImageId yang ditentukan di RegionMap berdasarkan wilayah yang dipilih serta properti ImageId yang diperlukan dalam pemetaan tersebut.

  • Parameter MapName disetel ke RegionMap.

  • Parameter TopLevelKey disetel ke wilayah tempat stack dibuat. Dalam contoh ini, parameter ditentukan menggunakan !Ref regionParam. Untuk informasi lebih lanjut, lihat Ref.

  • Parameter SecondLevelKey disetel ke arsitektur yang diinginkan. Dalam contoh ini, "32" digunakan.

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  regionParam:
    Description: wilayah tempat Anda ingin membuat instance ECS
    Type: String
    AllowedValues:
      - hangzhou
      - beijing
Mappings:
  RegionMap:
    hangzhou:
      '32': m-25l0rcfjo
      '64': m-25l0rcfj1
    beijing:
      '32': m-25l0rcfj2
      '64': m-25l0rcfj3
Resources:
  WebServer:
    Type: ALIYUN::ECS::Instance
    Properties:
      ImageId: !FindInMap [RegionMap, !Ref regionParam, "32"]
      InstanceType: ecs.t1.small
      SecurityGroupId: sg-25zwc****
      ZoneId: cn-beijing-b
      Tags:
        - Key: key1
          Value: value1
        - Key: key2
          Value: value2
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "regionParam": {
      "Description": "wilayah tempat Anda ingin membuat instance ECS",
      "Type": "String",
      "AllowedValues": [
        "hangzhou",
        "beijing"
      ]
    }
  },
  "Mappings": {
    "RegionMap": {
      "hangzhou": {
        "32": "m-25l0rcfjo",
        "64": "m-25l0rcfj1"
      },
      "beijing": {
        "32": "m-25l0rcfj2",
        "64": "m-25l0rcfj3"
      }
    }
  },
  "Resources": {
    "WebServer": {
      "Type": "ALIYUN::ECS::Instance",
      "Properties": {
        "ImageId": {
          "Fn::FindInMap": [
            "RegionMap",
            {
              "Ref": "regionParam"
            },
            "32"
          ]
        },
        "InstanceType": "ecs.t1.small",
        "SecurityGroupId": "sg-25zwc****",
        "ZoneId": "cn-beijing-b",
        "Tags": [
          {
            "Key": "key1",
            "Value": "value1"
          },
          {
            "Key": "key2",
            "Value": "value2"
          }
        ]
      }
    }
  }
}

Fungsi yang didukung