全部产品
Search
文档中心

Resource Orchestration Service:Kondisi

更新时间:Jul 02, 2025

Anda dapat menggunakan Fn::And, Fn::Or, Fn::Not, atau Fn::Equals untuk mendefinisikan pernyataan kondisi. Setiap kondisi dapat merujuk ke kondisi lain, nilai parameter, atau pemetaan. Kondisi dapat dikaitkan dengan sumber daya di bagian Resources dan Outputs dari sebuah template. Untuk mengaitkan kondisi dengan sumber daya, gunakan fungsi Fn::If atau properti Condition dari sumber daya tersebut.

Sintaks

Deklarasi kondisi terdiri dari nama kondisi dan pernyataan kondisi. Nama kondisi bertipe String. Anda dapat menggunakan fungsi berikut untuk mendefinisikan pernyataan kondisi dan merujuk ke kondisi lain dalam suatu kondisi. Setiap nama kondisi harus unik.

Fungsi berikut dapat digunakan untuk mendefinisikan kondisi, tetapi tidak dapat digunakan sebagai fungsi terluar:

"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"(hanya untuk referensi parameter), dan "Fn::FindInMap".

Contoh

  • Contoh berikut menunjukkan cara mendefinisikan kondisi:

    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         
  • Contoh berikut menunjukkan cara mengaitkan kondisi dengan sumber daya.

    Pada contoh ini, nilai EnvType digunakan sebagai kondisi untuk menentukan apakah akan membuat disk data dan bucket Object Storage Service (OSS) untuk instance Elastic Compute Service (ECS).

    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