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

Resource Orchestration Service:Fn::If について

最終更新日:Jan 16, 2025

組み込み関数 Fn::If は、2 つの可能な値のいずれかを返します。指定された条件が true と評価された場合は 1 つの値を返し、そうでない場合はもう 1 つの値を返します。

説明

テンプレートの Resources セクションと Outputs セクションのプロパティ値は、Fn::If 関数をサポートしています。擬似パラメーター ALIYUN::NoValue を戻り値として使用して、プロパティを削除できます。

宣言

  • JSON

    {
      "Fn::If": [
        "condition_name",
        "value_if_true",
        "value_if_false"
      ]
    }
  • YAML

    • 完全な関数名の構文:

      Fn::If:
        - condition_name
        - value_if_true
        - value_if_false
    • 短縮形の構文:

      !If [condition_name, value_if_true, value_if_false]

パラメーター

  • condition_name: Conditions セクションの条件の名前。条件名を使用して条件を参照できます。

  • value_if_true: 指定された条件が true と評価された場合に返される値。

  • value_if_false: 指定された条件が false と評価された場合に返される値。

次の例では、入力パラメーターに基づいてデータディスクを作成できるかどうかが決定されます。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  EnvType:
    Default: pre
    Type: String
Conditions:
  CreateDisk:
    !Equals
      - prod
      - !Ref EnvType
Resources:
  WebServer:
    Type: ALIYUN::ECS::Instance
    Properties:
      DiskMappings:
        !If
          - CreateDisk
          - - Category: cloud_efficiency
              DiskName: FirstDataDiskName
              Size: 40
            - Category: cloud_ssd
              DiskName: SecondDataDiskName
              Size: 40
          - !Ref ALIYUN::NoValue
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "EnvType": {
      "Default": "pre",
      "Type": "String"
    }
  },
  "Conditions": {
    "CreateDisk": {
      "Fn::Equals": [
        "prod",
        {
          "Ref": "EnvType"
        }
      ]
    }
  },
  "Resources": {
    "WebServer": {
      "Type": "ALIYUN::ECS::Instance",
      "Properties": {
        "DiskMappings": {
          "Fn::If": [
            "CreateDisk",
            [
              {
                "Category": "cloud_efficiency",
                "DiskName": "FirstDataDiskName",
                "Size": 40
              },
              {
                "Category": "cloud_ssd",
                "DiskName": "SecondDataDiskName",
                "Size": 40
              }
            ],
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        }
      }
    }
  }
}

サポートされている関数