Todos os produtos
Search
Central de documentação

Resource Orchestration Service:Como consultar um valor de um mapa em um modelo?

Última atualização: Jun 27, 2026

Os modelos do ROS permitem consultar valores de mapas armazenados como pares chave-valor. Dependendo da definição do mapa na seção Mappings e da quantidade de níveis que ele possui, utilize as funções intrínsecas descritas neste tópico.

Escolha a função adequada conforme o tipo de mapa:

Tipo de mapa

Definido na seção Mappings

Função recomendada

Nível único

Não

Fn::Select

Nível único (string JSON)

Não

Fn::GetJsonValue

Dois níveis

Sim

Fn::FindInMap

Dois níveis

Não

Fn::Select aninhado

Multinível

Sim (dois níveis ou mais)

Fn::FindInMap + Fn::Select

Multinível

Não

Fn::Select aninhado ou Fn::Jq

Multinível (filtros complexos)

Ambos

Fn::Jq

Consultar um valor de um mapa de nível único

Nota

Não defina um mapa de nível único na seção Mappings. O Resource Orchestration Service (ROS) não consegue consultar valores de mapas de nível único nessa seção. Para mais informações, consulte Mappings.

Fn::Select

Nota

Utilize Fn::Select para consultar um valor em um mapa de nível único.

A função Fn::Select recebe uma chave e um objeto de mapa, retornando o valor correspondente. Para mais detalhes, veja Fn::Select.

  • Consulte value_a a partir de um parâmetro de objeto JSON — ao fornecer key_a, a função retorna value_a:

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      InputMap:
        Type: Json
    Outputs:
      value_a:
        Value:
          Fn::Select:
          - key_a
          - InputMap
  • Obtenha um valor de um mapa inline definido diretamente no modelo:

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

Fn::GetJsonValue

Caso o mapa seja fornecido como uma string JSON em vez de um objeto JSON, empregue Fn::GetJsonValue para recuperar o valor de uma chave de primeiro nível. Consulte também Fn::GetJsonValue.

Ao informar key_a, o resultado é value_a:

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

Consultar um valor de um mapa de dois níveis

Fn::FindInMap

Nota

A função Fn::FindInMap opera exclusivamente com mapas de dois níveis definidos na seção Mappings.

Use Fn::FindInMap para localizar um valor através de uma chave de nível superior e uma chave de segundo nível. Para mais informações, acesse Mappings e Fn::FindInMap.

O exemplo abaixo seleciona o ID de uma imagem ECS com base na região e na arquitetura. Considerando regionParam=hangzhou e arquitetura '32', o retorno será 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

Nota

Para mapas de dois níveis fora da seção Mappings, aplique Fn::Select de forma aninhada.

Aninhe Fn::Select duas vezes para navegar por um mapa de dois níveis. A chamada interna obtém o submapa em key_1, enquanto a chamada externa recupera o valor em key_1_1. Veja mais em Fn::Select.

Retorna 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

Consultar um valor de um mapa multinível

Fn::Select

  • Em mapas com mais de dois níveis na seção Mappings, combine Fn::FindInMap e Fn::Select: use Fn::FindInMap para obter um submapa no limite de dois níveis e, em seguida, aplique Fn::Select para acessar a chave mais profunda.

    Fn::Select:
      - key
      - Fn::FindInMap:
          - MapName
          - TopLevelKey
          - SecondLevelKey
  • Para mapas multiníveis fora da seção Mappings, aninhe Fn::Select várias vezes seguindo o mesmo padrão do exemplo de dois níveis. Consulte Fn::Select para detalhes.

Fn::Jq

Recorra a Fn::Jq quando precisar de filtragens complexas em estruturas aninhadas, como extrair campos específicos de um array de objetos. Saiba mais em Fn::Jq.

No exemplo a seguir, extraímos name e type de cada objeto presente no array 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

Retorno:

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