Todos los productos
Search
Centro de documentos

Resource Orchestration Service:Conditions

Última actualización: Sep 04, 2026

Utilice la sección Conditions para definir la lógica condicional que determina si se crean recursos, propiedades y salidas. Defina las instrucciones de condición con Fn::And, Fn::Or, Fn::Not o Fn::Equals mediante referencias a parámetros, asignaciones u otras condiciones; después, asocie cada condición con los recursos o salidas correspondientes mediante la clave Condition o Fn::If.

Sintaxis

Funcionamiento de las condiciones

Para usar condiciones en una plantilla, siga estos pasos:

  1. Definir parámetros de entrada: Declare en la sección Parameters los valores que evaluarán sus condiciones.

  2. Definir condiciones: Escriba las instrucciones de condición en la sección Conditions mediante las funciones compatibles que se enumeran a continuación. Cada nombre de condición debe ser único y de tipo String. Las condiciones pueden hacer referencia a otras condiciones.

  3. Asociar condiciones con recursos o salidas: Haga referencia a las condiciones en la sección Resources (mediante la clave Condition o Fn::If) y en la sección Outputs (mediante la clave Condition) para controlar qué elementos se crean.

Funciones de condición

Use las siguientes funciones para definir instrucciones de condición:

Las siguientes funciones son compatibles dentro de las instrucciones de condición, pero no pueden usarse como función externa en una condición:

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 (solo referencias a parámetros) y Fn::FindInMap.

Ejemplos

  • Definición de condiciones

    El siguiente ejemplo define cuatro condiciones basadas en un parámetro EnvType. DevEnv y UTEnv comprueban un valor de entorno específico. PREEnv es verdadera cuando ni DevEnv ni UTEnv son verdaderas. ProdEnv combina una comprobación de igualdad con PREEnv mediante Fn::And para mostrar cómo componer condiciones a partir de otras.

    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         
  • Asociación de condiciones con recursos y salidas

    Este ejemplo usa EnvType para controlar la creación de recursos. Cuando EnvType es prod, la plantilla crea discos de datos para la instancia de Elastic Compute Service (ECS) y aprovisiona un bucket de Object Storage Service (OSS). Si EnvType tiene cualquier otro valor, no se crean ni los discos de datos ni el bucket de OSS, y se suprime la salida correspondiente. El ejemplo muestra tres formas de usar una condición: - **Fn::If en un valor de propiedad**: Establece condicionalmente DiskMappings en la instancia ECS (WebServer). - **Clave Condition en un recurso**: Controla la creación de todo el recurso OssBucket. - **Clave Condition en una salida**: Suprime OssDomain cuando el bucket no existe.

    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