全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
资源编排

条件(Conditions)

更新时间:2017-06-07 13:26:11

条件(Conditions)

每一个条件项由 Fn::And、Fn::Or、Fn::Not、Fn::Equals 定义。根据您在创建或更新堆栈时指定的输入参数值进行计算。在每个条件中都可以引用其他条件、参数值或映射。在模板的 Resources 和 Outputs 部分将条件与资源和资源属性关联起来。条件和 Resource 的关联通过两种方式:Fn::If 函数或者 Resource 资源的 Condition 字段。

语法

每个条件由条件名和条件本身对组成。其中条件名是字符串类型。条件是由 Fn::And、Fn::Or、Fn::Not、Fn::Equals 定义,在本条件中还可以引用其他条件。多个条件用逗号隔开,每个条件名不能重复。

示例

以下示例 Conditions。

  1. "Conditions" : {
  2. "DevEnv": {"Fn::Equals": ["Dev", {"Ref": "EnvType"}]},
  3. "UTEnv": {"Fn::Equals": ["UT", {"Ref": "EnvType"}]},
  4. "PREEnv": {"Fn::Not": {"Fn::Or": ["DevEnv", "UTEnv"]}},
  5. "ProdEnv": {"Fn::And": [{"Fn::Equals": ["Prod", {"Ref": "EnvType"}]}, "PREEnv"]}
  6. }

以下示例 Conditions 和 Resources 如何关联。本例中会根据用户的 EnvType 参数值决定是否给 ECS instance 创建数据盘,创建 OSS bucket。

  1. {
  2. "ROSTemplateFormatVersion":"2015-09-01",
  3. "Parameters":{
  4. "EnvType":{
  5. "Default":"pre",
  6. "Type":"String"
  7. }
  8. },
  9. "Conditions":{
  10. "CreateProdRes":{
  11. "Fn::Equals":[
  12. "prod",
  13. {
  14. "Ref":"EnvType"
  15. }
  16. ]
  17. }
  18. },
  19. "Resources":{
  20. "WebServer":{
  21. "Type":"ALIYUN::ECS::Instance",
  22. "Properties":{
  23. "DiskMappings":{
  24. "Fn::If":[
  25. "CreateProdRes",
  26. [
  27. {
  28. "Category":"cloud_efficiency",
  29. "DiskName":"FirstDataDiskName",
  30. "Size":40
  31. },
  32. {
  33. "Category":"cloud_ssd",
  34. "DiskName":"SecondDataDiskName",
  35. "Size":40
  36. }
  37. ],
  38. {
  39. "Ref":"ALIYUN::NoValue"
  40. }
  41. ]
  42. },
  43. "VpcId":"vpc-2zew9pxh2yirtzqxdboi1",
  44. "SystemDiskCategory":"cloud_efficiency",
  45. "SecurityGroupId":"sg-2zece6wcqriejf1v91sr",
  46. "SystemDiskSize":40,
  47. "ImageId":"centos_6_8_64_40G_base_20170222.vhd",
  48. "IoOptimized":"optimized",
  49. "VSwitchId":"vsw-2zed9txvy7h2srqo6jmgq",
  50. "InstanceType":"ecs.n1.medium"
  51. }
  52. },
  53. "OssBucket": {
  54. "Type": "ALIYUN::OSS::Bucket",
  55. "Condition": "CreateProdRes",
  56. "Properties": {
  57. "AccessControl": "private",
  58. "BucketName": "myprodbucket""
  59. }
  60. }
  61. },
  62. "Outputs":{
  63. "InstanceId":{
  64. "Value":{
  65. "Fn::GetAtt":[
  66. "WebServer",
  67. "InstanceId"
  68. ]
  69. }
  70. },
  71. "OssDomain":{
  72. "Condition": "CreateProdRes",
  73. "Value":{
  74. "Fn::GetAtt":[
  75. "OssBucket",
  76. "DomainName"
  77. ]
  78. }
  79. }
  80. }
  81. }
本文导读目录