すべてのプロダクト
Search
ドキュメントセンター

条件(Conditions)

最終更新日: Mar 18, 2020

各条件項目は、Fn::And, Fn::Or, Fn::Not, Fn::Equals によって定義されます。スタックの作成または更新時に、指定された入力パラメータ値に基づいて計算されます。条件内の他の条件、パラメータ値、またはマッピングを参照することができます。条件をテンプレートのリソースおよび出力部分のリソースおよびリソース属性に関連付けることができます。条件は、次の方法でリソースに関連付けられます。ビルトイン関数 Fn :: If またはリソースの条件フィールドを使用します。

構文

条件は、条件名と条件本体で構成されます。条件名は文字列であり、テンプレート内で一意である必要です。条件は組み込み関数 Fn :: And、Fn :: Or、Fn :: Not、Fn :: Equals で定義されます。ある条件で他の条件を参照することもできます。複数の条件はカンマで区切ります。

次の例は、条件を定義する方法を示しています。

  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. }

次の例は、条件をリソースに関連付ける方法を示しています。この例では、ECS インスタンスのデータディスクと OSS バケットを作成するかどうかは、EnvType の値によって決まります。

  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. }