Todos os produtos
Search
Central de documentação

Resource Orchestration Service:Conditions

Última atualização: Jun 27, 2026

Use a seção Conditions para definir a lógica condicional que determina a criação de recursos, propriedades e outputs. Defina instruções de condição com Fn::And, Fn::Or, Fn::Not ou Fn::Equals — referenciando parâmetros, mapeamentos ou outras condições — e associe cada condição a recursos ou outputs por meio da chave Condition ou de Fn::If.

Sintaxe

Funcionamento das condições

Para usar condições em um modelo, siga estas etapas:

  1. Defina os parâmetros de entrada — Declare na seção Parameters os valores que as condições avaliarão.

  2. Defina as condições — Escreva instruções de condição na seção Conditions usando as funções compatíveis listadas abaixo. Cada nome de condição deve ser único e do tipo String. Condições podem referenciar outras condições.

  3. Associe condições a recursos ou outputs — Referencie as condições na seção Resources (por meio da chave Condition ou de Fn::If) e na seção Outputs (por meio da chave Condition) para controlar o que será criado.

Funções de condição

Use as seguintes funções para definir instruções de condição:

As funções a seguir são compatíveis dentro de instruções de condição, mas não podem ser a função mais externa em uma condição:

Fn::Select, Fn::Join, Fn::Split, Fn::Replace, Fn::Base64Encode, Fn::Base64Decode, Fn::MemberListToMap, Fn::If, Fn::ListMerge, Fn::GetJsonValue, Fn::MergeMapToList, Fn::SelectMapList, Fn::Add, Fn::Avg, Fn::Str, Fn::Calculate, Ref (apenas referências de parâmetros) e Fn::FindInMap.

Exemplos

  • Definição de condições

    O exemplo a seguir define quatro condições com base no parâmetro EnvType. DevEnv e UTEnv verificam, cada uma, um valor específico de ambiente. PREEnv é verdadeira quando nem DevEnv nem UTEnv forem verdadeiras. ProdEnv combina uma verificação de igualdade com PREEnv usando Fn::And, demonstrando como compor condições a partir de outras.

    Conditions:
      DevEnv:
        Fn::Equals:
          - Dev
          - Ref: EnvType
      UTEnv:
        Fn::Equals:
          - UT
          - Ref: EnvType
      PREEnv:
        Fn::Not:
          Fn::Or:
            - DevEnv
            - UTEnv
      ProdEnv:
        Fn::And:
          - Fn::Equals:
              - Prod
              - Ref: EnvType
          - PREEnv         
  • Associação de condições a recursos e outputs

    O exemplo abaixo usa EnvType para controlar a criação de recursos. Quando EnvType for prod, o modelo cria discos de dados para a instância do Elastic Compute Service (ECS) e provisiona um bucket do Object Storage Service (OSS). Se EnvType tiver qualquer outro valor, nem os discos de dados nem o bucket OSS serão criados, e o output correspondente será suprimido. Este exemplo demonstra três formas de usar uma condição: - **Fn::If em um valor de propriedade** — Define condicionalmente DiskMappings na instância ECS (WebServer). - **Chave Condition em um recurso** — Controla a criação de todo o recurso OssBucket. - **Chave Condition em um output** — Suprime OssDomain quando o bucket não existir.

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      EnvType:
        Default: pre
        Type: String
    Conditions:
      CreateProdRes:
        Fn::Equals:
          - prod
          - Ref: EnvType
    Resources:
      WebServer:
        Type: ALIYUN::ECS::Instance
        Properties:
          DiskMappings:
            Fn::If:
              - CreateProdRes
              - - Category: cloud_efficiency
                  DiskName: FirstDataDiskName
                  Size: 40
                - Category: cloud_ssd
                  DiskName: SecondDataDiskName
                  Size: 40
              - Ref: ALIYUN::NoValue
          VpcId: vpc-2zew9pxh2yirtzqxd****
          SystemDiskCategory: cloud_efficiency
          SecurityGroupId: sg-2zece6wcqriejf1v****
          SystemDiskSize: 40
          ImageId: centos_6_8_64_40G_base_2017****.vhd
          IoOptimized: optimized
          VSwitchId: vsw-2zed9txvy7h2srqo6****
          InstanceType: ecs.n1.medium
      OssBucket:
        Type: ALIYUN::OSS::Bucket
        Condition: CreateProdRes
        Properties:
          AccessControl: private
          BucketName: myprodbucket
    Outputs:
      InstanceId:
        Value:
          Fn::GetAtt:
            - WebServer
            - InstanceId
      OssDomain:
        Condition: CreateProdRes
        Value:
          Fn::GetAtt:
            - OssBucket
            - DomainName