AWS Cloudformation - Condition Functions

前面學習了Cloudformation 模板的內置函數。其中有一系列特殊的內置函數這裏重點學習一下,叫做 Condition Functions。他的作用其實就是對布爾值的相關操作,類似if..else的條件語句的效果。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html

這些條件函數是需要配合condition section來操作的。

基本使用方法是

  1. 在Parameters 的部分傳入一些可選的參數
  2. 在Condition 的部分根據這些參數,通過我們的Condition Functions設置一些條件
  3. 在 Resource或者 Output 的部分,綁定在第二步的條件,根據不同的條件配置不同的結果

主要有下面5個函數

Fn::And 如果所有的條件成立,返回真,否則返回假

"Fn::And": [{condition}, {...}]

Fn::Equals 比較兩個值是否相等,如果相等,返回真,否則假

"Fn::Equals" : ["value_1", "value_2"]

Fn::If 判斷條件,如果爲真,返回第一個值,否則返回第二個值

"Fn::If": [condition_name, value_if_true, value_if_false]

Fn::Not 如果條件不成立,那麼返回真,否則返回假

Fn::Not: [condition]

Fn::Or 如果任何一個條件成立,那麼爲真;如果所有條件不成立,那麼返回假

"Fn::Or": [{condition}, {...}]

最後給一個實際的例子,根據我傳入的參數,創建對應的VPC


{
   "AWSTemplateFormatVersion" : "2010-09-09",

    "Parameters": {
        "Tenancy": {
        "Description": "Set up VPC Tenancy",
        "Type": "String",
        "Default": "default",
        "AllowedValues" : [ "default", "dedicated"]
        }
        },

    "Conditions" : {
        "VPCTenancy" : {"Fn::Equals" : [{"Ref" : "Tenancy"}, "dedicated"]}
    },

   "Resources" : {
      "myVPC" : {
         "Type" : "AWS::EC2::VPC",
         "Properties" : {
            "CidrBlock" : "10.0.0.0/16",
            "EnableDnsSupport" : "false",
            "InstanceTenancy" : {
                    "Fn::If" : [
                        "VPCTenancy",
                        "dedicated",
                        "default"
                    ]},
            "EnableDnsHostnames" : "false",
            "Tags" : [ {"Key" : "foo", "Value" : "bar"} ]
         }
      }

   }
}  

創建看看,傳入參數選擇 dedicated

AWS Cloudformation - Condition Functions

最後可以看見創建好的 VPC 爲 dedicated

AWS Cloudformation - Condition Functions

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章