Tous les produits
Search
Centre de documentation

Resource Orchestration Service:Comment interroger une valeur dans un mappage au sein d'un modèle ?

Dernière mise à jour :Aug 10, 2026

Les modèles ROS permettent d'interroger des valeurs stockées sous forme de paires clé-valeur. Selon que le mappage est défini dans la section Mappings et selon son nombre de niveaux, utilisez les fonctions intrinsèques décrites dans cette rubrique.

Sélectionnez la fonction appropriée en fonction du type de votre mappage :

Type de mappage

Défini dans la section Mappings

Fonction recommandée

Un seul niveau

Non

Fn::Select

Un seul niveau (chaîne JSON)

Non

Fn::GetJsonValue

Deux niveaux

Oui

Fn::FindInMap

Deux niveaux

Non

Fn::Select imbriqué

Multiniveau

Oui (deux niveaux ou plus)

Fn::FindInMap + Fn::Select

Multiniveau

Non

Fn::Select imbriqué ou Fn::Jq

Multiniveau (filtres complexes)

L'un ou l'autre

Fn::Jq

Interroger une valeur dans un mappage à un seul niveau

Remarque

Ne définissez pas de mappage à un seul niveau dans la section Mappings. Resource Orchestration Service (ROS) ne permet pas d'interroger une valeur dans un mappage à un seul niveau situé dans la section Mappings. Pour plus d'informations, consultez la rubrique Mappings.

Fn::Select

Remarque

Utilisez la fonction Fn::Select pour interroger une valeur dans un mappage à un seul niveau.

La fonction Fn::Select accepte une clé et un objet de mappage, puis renvoie la valeur correspondante. Pour plus d'informations, consultez la rubrique Fn::Select.

  • Interrogez value_a à partir d'un paramètre d'objet JSON : étant donné key_a, la fonction renvoie value_a :

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      InputMap:
        Type: Json
    Outputs:
      value_a:
        Value:
          Fn::Select:
          - key_a
          - InputMap
  • Interrogez une valeur dans un mappage intégré défini directement dans le modèle :

    ROSTemplateFormatVersion: '2015-09-01'
    Resources:
      Mock:
        Type: MockResource
        Properties:
          Prop1:
            Fn::Select:
            - key
            - key1: value1
              key2: value2

Fn::GetJsonValue

Lorsque le mappage est transmis sous forme de chaîne JSON plutôt que d'objet JSON, utilisez la fonction Fn::GetJsonValue pour interroger la valeur associée à une clé de premier niveau. Pour plus d'informations, consultez la rubrique Fn::GetJsonValue.

Étant donné key_a, la fonction renvoie value_a :

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  InputMapJsonString:
    Type: Json
Outputs:
  value_a:
    Value:
      Fn::GetJsonValue:
      - key_a
      - InputMapJsonString

Interroger une valeur dans un mappage à deux niveaux

Fn::FindInMap

Remarque

La fonction Fn::FindInMap fonctionne uniquement avec les mappages à deux niveaux définis dans la section Mappings.

Utilisez la fonction Fn::FindInMap pour rechercher une valeur à l'aide d'une clé de premier niveau et d'une clé de second niveau. Pour plus d'informations, consultez les rubriques Mappings et Fn::FindInMap.

L'exemple suivant sélectionne un ID d'image ECS en fonction de la région et de l'architecture. Étant donné regionParam=hangzhou et l'architecture '32', la fonction renvoie m-25l0rcfjo :

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  regionParam:
    Description: the region where you want to create the Elastic Compute Service (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'

Fn::Select

Remarque

Utilisez la fonction Fn::Select imbriquée pour les mappages à deux niveaux qui ne figurent pas dans la section Mappings.

Imbriquez deux fois la fonction Fn::Select pour accéder aux données d'un mappage à deux niveaux. L'appel interne récupère le sous-mappage correspondant à key_1, tandis que l'appel externe récupère la valeur associée à key_1_1. Pour plus d'informations, consultez la rubrique Fn::Select.

La fonction renvoie value_1_1 :

Fn::Select:
- key_1_1:
- Fn::Select:
  - key_1
  - key_1:
      key_1_1: value_1_1
      key_1_2: value_1_2
    key_2:
      key_2_1: value_2_1
      key_2_2: value_2_2

Interroger une valeur dans un mappage multiniveau

Fn::Select

  • Pour les mappages comportant plus de deux niveaux dans la section Mappings, combinez les fonctions Fn::FindInMap et Fn::Select : utilisez Fn::FindInMap pour récupérer un sous-mappage à la limite des deux premiers niveaux, puis utilisez Fn::Select pour accéder aux clés plus profondes.

    Fn::Select:
      - key
      - Fn::FindInMap:
          - MapName
          - TopLevelKey
          - SecondLevelKey
  • Pour les mappages multiniveau situés en dehors de la section Mappings, imbriquez plusieurs fois la fonction Fn::Select en suivant le même schéma que pour l'exemple à deux niveaux. Pour plus d'informations, consultez la rubrique Fn::Select.

Fn::Jq

Utilisez la fonction Fn::Jq lorsque vous devez appliquer des filtres complexes sur des structures imbriquées, par exemple pour extraire des champs spécifiques d'un tableau d'objets. Pour plus d'informations, consultez la rubrique Fn::Jq.

L'exemple suivant extrait les champs name et type de chaque objet du tableau parameters :

Fn::Jq:
  - All
  - '.parameters[] | {"param_name": .name, "param_type":.type}'
  - changeSet:
      items: []
      kind: git
    id: 2013-12-27_00-09-37
    parameters:
      - name: PKG_TAG_NAME
        value: trunk
      - name: GIT_COMMIT
        value: master
      - name: TRIGGERED_JOB
        value: trunk-buildall

Résultat renvoyé :

- param_name: PKG_TAG_NAME
- param_name: GIT_COMMIT
- param_name: TRIGGERED_JOB