条件(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。
Plain Text
1{
2 "Conditions": {
3 "DevEnv": {
4 "Fn::Equals": [
5 "Dev",
6 {
7 "Ref": "Env"
8 }
9 ]
10 },
11 "PREEnv": {
12 "Fn::Not": {
13 "Fn::Or": [
14 "DevEnv",
15 "UTEnv"
16 ]
17 }
18 },
19 "ProdEnv": {
20 "Fn::And": [
21 {
22 "Fn::Equals": [
23 "Prod",
24 {
25 "Ref": "Env"
26 }
27 ]
28 },
29 "PREEnv"
30 ]
31 }
32 }
33}
以下示例 Conditions 和 Resources 如何关联。本例中会根据用户的 Env 参数值决定是否创建BBC数据。
Plain Text
1{
2 "COSTemplateFormatVersion": "2019-08-07",
3 "Parameters": {
4 "Env": {
5 "Type": "String",
6 "Default": "online"
7 }
8 },
9 "Conditions": {
10 "CreateBcc": {
11 "Fn::Equals": [
12 "online",
13 {
14 "Ref": "Env"
15 }
16 ]
17 }
18 },
19 "Resources": {
20 "bcc": {
21 "Type": "BCE::BCC::Instance",
22 "Condition": "CreateBcc",
23 "Properties": {
24 "Billing": {
25 "PaymentTiming": "Postpaid"
26 },
27 "InstanceType": {
28 "Ref": "InstanceType"
29 },
30 "ImageId": {
31 "Ref": "ImageId"
32 },
33 "ZoneName": {
34 "Ref": "ZoneName"
35 },
36 "CpuCount": {
37 "Ref": "Cpu"
38 },
39 "MemoryCapacityInGB": {
40 "Ref": "Memory"
41 },
42 "CreateCdsList": [
43 {
44 "CdsSizeInGB": {
45 "Ref": "CdsSize"
46 },
47 "StorageType": {
48 "Ref": "CdsStorageType"
49 }
50 }
51 ]
52 }
53 }
54 }
55}
