All Products
Search
Document Center

Resource Orchestration Service:Fn::If

Last Updated:Jun 26, 2025

Fungsi bawaan Fn::If mengembalikan salah satu dari dua nilai yang mungkin. Fungsi ini mengembalikan satu nilai jika kondisi tertentu dievaluasi sebagai benar dan nilai lainnya jika sebaliknya.

Catatan

Nilai properti di bagian Resources dan Outputs dari template mendukung fungsi Fn::If. Anda dapat menggunakan parameter pseudo ALIYUN::NoValue sebagai nilai pengembalian untuk menghapus properti tersebut.

Deklarasi

  • JSON

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

    • Sintaks untuk nama fungsi lengkap:

      Fn::If:
        - condition_name
        - value_if_true
        - value_if_false
    • Sintaks untuk bentuk pendek:

      !If [condition_name, value_if_true, value_if_false]

Parameter

  • condition_name: Nama kondisi di bagian Conditions. Anda dapat mereferensikan kondisi dengan menggunakan nama kondisi tersebut.

  • value_if_true: Nilai yang dikembalikan ketika kondisi yang ditentukan dievaluasi sebagai benar.

  • value_if_false: Nilai yang dikembalikan ketika kondisi yang ditentukan dievaluasi sebagai salah.

Contoh

Pada contoh berikut, apakah disk data dapat dibuat ditentukan berdasarkan parameter input:

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"
            }
          ]
        }
      }
    }
  }
}

Fungsi yang didukung