Tous les produits
Search
Centre de documentation

Resource Orchestration Service:Conditions

Dernière mise à jour :Aug 10, 2026

La section Conditions permet de définir une logique conditionnelle qui contrôle la création des ressources, des propriétés et des sorties. Définissez des instructions de condition à l'aide des fonctions Fn::And, Fn::Or, Fn::Not ou Fn::Equals — en faisant référence à des paramètres, des mappages ou d'autres conditions — puis associez chaque condition aux ressources ou aux sorties à l'aide de la clé Condition ou de la fonction Fn::If.

Syntaxe

Fonctionnement des conditions

Pour utiliser des conditions dans un modèle, procédez comme suit :

  1. Définissez les paramètres d'entrée — Déclarez dans la section Parameters les valeurs que vos conditions évalueront.

  2. Définissez les conditions — Rédigez les instructions de condition dans la section Conditions en utilisant les fonctions prises en charge listées ci-dessous. Chaque nom de condition doit être unique et de type String. Les conditions peuvent faire référence à d'autres conditions.

  3. Associez les conditions aux ressources ou aux sorties — Référencez les conditions dans la section Resources (via la clé Condition ou la fonction Fn::If) et dans la section Outputs (via la clé Condition) afin de contrôler les éléments créés.

Fonctions de condition

Utilisez les fonctions suivantes pour définir des instructions de condition :

Les fonctions suivantes sont prises en charge au sein des instructions de condition, mais ne peuvent pas constituer la fonction racine d'une condition :

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 (références de paramètres uniquement) et Fn::FindInMap.

Exemples

  • Définir des conditions

    L'exemple suivant définit quatre conditions basées sur un paramètre EnvType. DevEnv et UTEnv vérifient chacune une valeur d'environnement spécifique. PREEnv est vraie lorsque ni DevEnv ni UTEnv n'est vraie. ProdEnv combine une vérification d'égalité avec PREEnv à l'aide de Fn::And, illustrant comment composer des conditions à partir d'autres conditions.

    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         
  • Associer des conditions aux ressources et aux sorties

    L'exemple suivant utilise EnvType pour contrôler la création de ressources. Lorsque EnvType est défini sur prod, le modèle crée des disques de données pour l'instance Elastic Compute Service (ECS) et provisionne un bucket Object Storage Service (OSS). Lorsque EnvType prend toute autre valeur, ni les disques de données ni le bucket OSS ne sont créés, et la sortie correspondante est supprimée. Cet exemple illustre trois façons d'utiliser une condition : - **Fn::If sur une valeur de propriété** — Définit conditionnellement DiskMappings sur l'instance ECS (WebServer). - **Clé Condition sur une ressource** — Contrôle la création de la ressource OssBucket dans son intégralité. - **Clé Condition sur une sortie** — Supprime OssDomain lorsque le bucket n'existe pas.

    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