条件(Conditions)
更新时间:2024-09-25
下述内容即将下线,后续参考最新版本的条件语法。
每一个条件项由 Fn::And、Fn::Or、Fn::Not、Fn::Equals 定义。根据您在创建或更新堆栈时指定的输入参数值进行计算。在每个条件中都可以引用其他条件、参数值或映射。在模板的 Resources 和 Outputs 部分将条件与资源和资源属性关联起来。条件和 Resource 的关联通过两种方式:Fn::If 函数或者 Resource 资源的 Condition 字段。
语法
每个条件由条件名和条件本身对组成。其中条件名是字符串类型。条件是由 Fn::And、Fn::Or、Fn::Not、Fn::Equals 定义,在本条件中还可以引用其他条件。多个条件用逗号隔开,每个条件名不能重复。
示例
以下示例 Conditions。
{
"Conditions": {
"DevEnv": {
"Fn::Equals": [
"Dev",
{
"Ref": "Env"
}
]
},
"PREEnv": {
"Fn::Not": {
"Fn::Or": [
"DevEnv",
"UTEnv"
]
}
},
"ProdEnv": {
"Fn::And": [
{
"Fn::Equals": [
"Prod",
{
"Ref": "Env"
}
]
},
"PREEnv"
]
}
}
}
以下示例 Conditions 和 Resources 如何关联。本例中会根据用户的 Env 参数值决定是否创建BBC数据。
{
"COSTemplateFormatVersion": "2019-08-07",
"Parameters": {
"Env": {
"Type": "String",
"Default": "online"
}
},
"Conditions": {
"CreateBcc": {
"Fn::Equals": [
"online",
{
"Ref": "Env"
}
]
}
},
"Resources": {
"bcc": {
"Type": "BCE::BCC::Instance",
"Condition": "CreateBcc",
"Properties": {
"Billing": {
"PaymentTiming": "Postpaid"
},
"InstanceType": {
"Ref": "InstanceType"
},
"ImageId": {
"Ref": "ImageId"
},
"ZoneName": {
"Ref": "ZoneName"
},
"CpuCount": {
"Ref": "Cpu"
},
"MemoryCapacityInGB": {
"Ref": "Memory"
},
"CreateCdsList": [
{
"CdsSizeInGB": {
"Ref": "CdsSize"
},
"StorageType": {
"Ref": "CdsStorageType"
}
}
]
}
}
}
}