組み込み関数 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"
}
]
}
}
}
}
}