AWS 規則函數 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS 規則函數

可以在規則的條件或宣告中使用內部函數,如 Fn::EqualsFn::NotFn::RefAll。條件屬性確定是否 AWS CloudFormation 應用斷言。如果條件評估為true,則 CloudFormation 會評估宣告,以在建立或更新佈建產品時驗證參數值是否有效。如果參數值無效,則 CloudFormation 不會建立或更新堆疊。如果條件評估為false,則 CloudFormation 不檢查參數值並繼續堆棧操作。

Fn::And

如果所有指定條件計算結果為 true,則傳回 true;如果其中任一條件計算結果為 false,則傳回 falseFn::And 擔任 AND 運算子。可納入的條件數量下限為 2,上限為 10。

宣告

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

參數

condition

規則指定的內部函數,計算結果為 truefalse

範例

若參考的安全群組名稱等於 truesg-mysggroup 參數的值為 InstanceTypem1.large,以下範例會計算結果為 m1.small

"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "m1.large", "m1.small" ], {"Ref": "InstanceType"} ] } ]

Fn::Contains

若指定字串與字串清單其中至少一個值相符,則傳回 true

宣告

"Fn::Contains" : [[list_of_strings], string]

參數

list_of_strings

字串清單,如 "A", "B", "C"

string

想與字串清單對照的字串,例如 "A"

範例

若清單 (trueInstanceType) 含有 m1.large 參數值,以下函數會計算結果為 m1.small

"Fn::Contains" : [ ["m1.large", "m1.small"], {"Ref" : "InstanceType"} ]

Fn::EachMemberEquals

若指定字串符合某個清單內所有的值,傳回 true

宣告

"Fn::EachMemberEquals" : [[list_of_strings], string]

參數

list_of_strings

字串清單,如 "A", "B", "C"

string

想與字串清單對照的字串,例如 "A"

範例

如果類型 AWS::EC2::VPC::Id 之所有參數適用的 Department 標籤具有 IT 值,則下列函數會傳回 true:

"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]

Fn::EachMemberIn

若字串清單中的每個成員均符合第二份字串清單內的值少一個值,即傳回 true

宣告

"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]

參數

strings_to_check

字串清單,例如"A", "B", "C"。 CloudFormation 檢查strings_to_check參數中的每個成員是否在strings_to_match參數中。

strings_to_match

字串清單,如 "A", "B", "C"strings_to_match 參數的每個成員會與 strings_to_check 參數的成員進行對照。

範例

以下函數會檢查使用者是否指定了位在有效的 Virtual Private Cloud (VPC) 內的子網路。VPC 必須位在使用者使用堆疊的帳戶和區域內。該函數會套用至類型 AWS::EC2::Subnet::Id 的所有參數。

"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]

Fn::Equals

比較兩個值,判斷是否相同。若兩值相同,即傳回 true,反之則傳回 false

宣告

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

參數

value

要與另一個值比較的任何類型的值。

範例

true 參數的值等同 EnvironmentType,下列範例會計算結果為 prod

"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]

Fn::Not

若某個條件計算結果為 false,則傳回 true,若某個條件計算結果為 true,則傳回 falseFn::Not 擔任 NOT 運算子。

宣告

"Fn::Not" : [{condition}]

參數

condition

規則指定的內部函數,計算結果為 truefalse

範例

EnvironmentType 參數的值不同於 prod,下列範例會計算結果為 true

"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]

Fn::Or

如果任一指定條件評估為 true,則傳回 true;如果所有的條件評估為 false,則傳回 falseFn::Or 擔任 OR 運算子。可納入的條件數量下限為 2,上限為 10。

宣告

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

參數

condition

規則指定的內部函數,計算結果為 truefalse

範例

若參考的安全群組名稱等於 truesg-mysggroup 參數的值為 InstanceTypem1.large,以下範例會計算結果為 m1.small

"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.small"], {"Ref" : "InstanceType"}]} ]

Fn::RefAll

傳回指定參數類型的所有值。

宣告

"Fn::RefAll" : "parameter_type"

參數

parameter_type

AWS特定參數類型,例如AWS::EC2::SecurityGroup::IdAWS::EC2::VPC::Id。如需更多詳細資訊,請參閱 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html 使用者指南中的AWS CloudFormation 參數部分。

範例

下列函數會傳回區域及正在建立或更新堆疊 AWS 帳戶 的所有 VPC ID 清單:

"Fn::RefAll" : "AWS::EC2::VPC::Id"

Fn::ValueOf

傳回某個屬性值,或指定參數和屬性值的清單。

宣告

"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]

參數

屬性

想要從中擷取某個值的屬性名稱。如需屬性的詳細資訊,請參閱 支援的屬性

parameter_logical_id

想要從中擷取屬性值的參數名稱。該參數並需於範本的 Parameters 區段內宣告。

範例

以下範例會傳回由 Department 參數指定之 VPC 的 ElbVpc 標籤的值:

"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]

如果為一個參數指定多個值,Fn:: ValueOf 函數可以返回一個列表。例如可指定多個子網路,並取得可用區域清單,其中每個成員均是特定子網路的可用區域:

"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]

Fn::ValueOfAll

傳回指定參數類型和屬性所有屬性值的清單。

宣告

"Fn::ValueOfAll" : ["parameter_type", "attribute"]

參數

屬性

想要從中擷取某個值的屬性名稱。如需屬性的詳細資訊,請參閱 支援的屬性

parameter_type

AWS特定參數類型,例如AWS::EC2::SecurityGroup::IdAWS::EC2::VPC::Id。如需更多詳細資訊,請參閱 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html 使用者指南中的AWS CloudFormation 參數部分。

範例

在下列範例中,Fn::ValueOfAll 函數會傳回一份值的清單,其中每個成員均是含有 Department 標籤之 VPC 該標籤的值。

"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]

支援的函數

無法在 Fn::ValueOfFn::ValueOfAll 函數內使用另一個函數。不過可以在所有其他規則特定的內建函式使用下列函數:

  • Ref

  • 其他規則特定的內部函數

支援的屬性

以下清單所述的是可為特定資源和參數類型擷取的屬性值:

AWS::EC2::VPC::Id 參數類型或 VPC ID。
  • DefaultNetworkAcl

  • DefaultSecurityGroup

  • 標籤。tag_key

AWS::EC2::Subnet::Id 參數類型或子網路 ID。
  • AvailabilityZone

  • 標籤。tag_key

  • VpcId

AWS::EC2::SecurityGroup::Id 參數類型或安全群組 ID。
  • 標籤。tag_key