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