すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:条件

最終更新日:Jan 16, 2025

Fn::And、Fn::Or、Fn::Not、または Fn::Equals を使用して、条件文を定義できます。各条件では、別の条件、パラメーター値、またはマッピングを参照できます。テンプレートの Resources セクションと Outputs セクションで、リソースに条件を関連付けることができます。リソースに条件を関連付けるには、Fn::If 関数またはリソースの Condition プロパティを使用できます。

構文

条件の宣言は、条件名と条件文で構成されます。条件名は String 型です。次の関数を使用して、条件文を定義できます。条件内で他の条件を参照できます。各条件名は一意である必要があります。

次の関数を使用して条件を定義できますが、これらの関数を最外部関数として使用することはできません。

"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(パラメーター参照の場合のみ)、および "Fn::FindInMap"。

  • 次の例は、条件を定義する方法を示しています。

    Conditions:
      DevEnv:  # 開発環境
        Fn::Equals:
          - Dev
          - Ref: EnvType
      UTEnv: # UT環境
        Fn::Equals:
          - UT
          - Ref: EnvType
      PREEnv: # PRE環境
        Fn::Not:
          Fn::Or:
            - DevEnv
            - UTEnv
      ProdEnv: #本番環境
        Fn::And:
          - Fn::Equals:
              - Prod
              - Ref: EnvType
          - PREEnv         
  • 次の例は、リソースに条件を関連付ける方法を示しています。

    この例では、EnvType 値が条件として使用され、Elastic Compute Service(ECS)インスタンスのデータディスクと Object Storage Service(OSS)バケットを作成するかどうかが決定されます。

    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