すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:Fn::FindInMap

最終更新日:Jan 16, 2025

組み込み関数 Fn::FindInMap は、Mappings セクションで宣言されている 2 レベルのマッピングのキーに対応する値を返します。

宣言

  • JSON

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

    • 完全な関数名の構文:

      Fn::FindInMap:
        - MapName
        - TopLevelKey
        - SecondLevelKey
    • 短縮形の構文:

      !FindInMap [MapName,TopLevelKey,SecondLevelKey]

パラメーター

  • MapName: Mappings セクションで宣言されているマッピングの名前です。詳細については、Mappings をご参照ください。

  • TopLevelKey: トップレベルキーです。値はキーと値のペアで構成されます。

  • SecondLevelKey: セカンドレベルキーです。値は文字列または数値です。

戻り値

SecondLevelKey パラメーターに割り当てられている値です。

たとえば、WebServer という名前のリソースを作成するときに、ImageId プロパティを指定するとします。この場合、Parameters セクションの regionParam を使用してリージョンを指定し、Mappings セクションの RegionMap を使用して各リージョンの ImageId マッピングを指定できます。このようにして、Fn::FindInMap は、指定されたリージョンに基づいて RegionMap 内の指定された ImageId マッピングを照会し、マッピング内で必要な ImageId プロパティを照会します。

  • MapName パラメーターは RegionMap に設定されています。

  • TopLevelKey パラメーターは、スタックが作成されるリージョンに設定されます。この例では、パラメーターは ! Ref regionParam を使用して決定されます。詳細については、Ref をご参照ください。

  • SecondLevelKey パラメーターは、目的のアーキテクチャに設定されます。この例では、"32" が使用されています。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  regionParam:
    Description: 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": "ECS インスタンスを作成するリージョン", // the region where you want to create the ECS instance
      "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"
          }
        ]
      }
    }
  }
}

サポートされている関数