Amazon 规则函数 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon 规则函数

在规则的条件或断言中,您可以使用内部函数,如 Fn::EqualsFn::NotFn::RefAll。条件属性确定 Amazon CloudFormation 是否应用断言。如果条件的计算结果为 true,则 CloudFormation 将评估断言以验证在创建或更新预配置产品时参数值是否有效。如果参数值无效,则 CloudFormation 不会创建或更新堆栈。如果条件的计算结果为 false,则 CloudFormation 不会检查参数值并继续堆栈操作。

Fn::And

如果所有指定条件计算为 true,则返回 true;如果任一条件计算为 false,则返回 falseFn::And 用作 AND 运算符。您最少可以包含 2 个条件,最多可以包含 10 个条件。

声明

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

Parameters

条件

计算结果为 truefalse 的特定于规则的内部函数。

示例

当引用的安全组名称等于 true 并且 sg-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]

Parameters

list_of_strings

字符串列表,如 "A", "B", "C"

字符串

要与字符串列表进行比较的字符串(如 "A")。

示例

如果 true 参数值包含在列表(InstanceTypem1.large)中,则以下函数的计算结果为 m1.small

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

Fn::EachMemberEquals

如果指定的字符串与列表中的所有值都匹配,则返回 true

声明

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

Parameters

list_of_strings

字符串列表,如 "A", "B", "C"

字符串

要与字符串列表进行比较的字符串(如 "A")。

示例

在以下情况下,以下函数将返回 trueAWS::EC2::VPC::Id 类型的所有参数的 Department 标签具有 IT 值:

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

Fn::EachMemberIn

如果字符串列表中的每个成员与第二个字符串列表中的至少一个值匹配,则返回 true

声明

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

Parameters

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"]

Parameters

value

要与另一个值进行比较的任意类型的值。

示例

如果 true 参数的值等于 EnvironmentType,则以下示例的计算结果为 prod

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

Fn::Not

对计算为 true 的条件返回 false,而对计算为 false 的条件返回 trueFn::Not 用作 NOT 运算符。

声明

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

Parameters

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}, {...}]

Parameters

condition

计算结果为 truefalse 的特定于规则的内部函数。

示例

如果引用的安全组名称等于 true 或者 sg-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"

Parameters

parameter_type

Amazon 特定的参数类型,如 AWS::EC2::SecurityGroup::IdAWS::EC2::VPC::Id。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的参数

示例

以下函数将返回正在创建或更新堆栈的区域和 Amazon Web Services 账户 账户的所有 VPC ID 列表:

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

Fn::ValueOf

返回属性值或特定的参数和属性的值的列表。

声明

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

Parameters

属性

要从中检索值的属性的名称。有关属性的更多信息,请参阅支持的属性

parameter_logical_id

要为其检索属性值的参数的名称。必须在模板的 Parameters 部分中声明此参数。

示例

以下示例对 ElbVpc 参数指定的 VPC 返回 Department 标签的值:

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

如果为一个参数指定多个值,则 Fn::ValueOf 函数会返回一个列表。例如,您可以指定多个子网并获取可用区的列表,其中每个成员均为特定子网的可用区:

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

Fn::ValueOfAll

返回给定参数类型和属性的所有属性值的列表。

声明

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

Parameters

属性

要从中检索值的属性的名称。有关属性的更多信息,请参阅支持的属性

parameter_type

Amazon 特定的参数类型,如 AWS::EC2::SecurityGroup::IdAWS::EC2::VPC::Id。有关更多信息,请参阅《Amazon 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

  • Tags.tag_key

AWS::EC2::Subnet::Id 参数类型或子网 ID。
  • AvailabilityZone

  • Tags.tag_key

  • VpcId

AWS::EC2::SecurityGroup::Id 参数类型或安全组 ID。
  • Tags.tag_key