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

Fn::GetAZs

内置函数 Fn::GetAZs 返回一个数组,该数组按字母顺序列出了指定区域的可用区。因为客户可访问不同的可用区,模板作者可通过内部函数 Fn::GetAZs 写出适用于调用用户访问的模板。这样,您就不必对指定区域的可用区的完整列表进行硬编码。

重要

Fn::GetAZs 函数仅返回有默认子网的可用区,除非所有可用区都没有默认子网,在后面这种情况下,将返回所有可用区。

describe-availability-zones Amazon CLI 命令的响应类似,Fn::GetAZs 函数的结果顺序是不确定的,可能会在添加新的可用区时发生变化。

IAM 权限

使用 Fn::GetAZs 函数所需的权限取决于您用于启动 Amazon EC2 实例的平台。对于这两个平台,您需要对 Amazon EC2 DescribeAvailabilityZonesDescribeAccountAttributes 操作具有权限。对于 EC2-VPC,您还需要对 Amazon EC2 DescribeSubnets 操作具有权限。

声明

JSON

{ "Fn::GetAZs" : "区域" }

YAML

完整函数名称的语法:

Fn::GetAZs: 区域

短格式的语法:

!GetAZs 区域

参数

区域

要获得其可用区的区域的名称。

您可以使用 AWS::Region 伪参数指定在其中创建堆栈的区域。指定空字符串与指定 AWS::Region 是对等的。

返回值

区域的可用区列表。

示例

计算区域

对于这些示例,CloudFormation 根据以下数组计算 Fn::GetAZs,假设用户已在 us-east-1 区域创建了堆栈:

[ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d" ]

JSON

{ "Fn::GetAZs" : "" } { "Fn::GetAZs" : { "Ref" : "AWS::Region" } } { "Fn::GetAZs" : "us-east-1" }

YAML

Fn::GetAZs: "" Fn::GetAZs: Ref: "AWS::Region" Fn::GetAZs: us-east-1

 

指定子网的可用区

以下示例使用 Fn::GetAZs 来指定子网的可用区:

JSON

"mySubnet" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : "10.0.0.0/24", "AvailabilityZone" : { "Fn::Select" : [ 0, { "Fn::GetAZs" : "" } ] } } }

YAML

mySubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: Fn::Select: - 0 - Fn::GetAZs: ""

 

具有短格式 YAML 的嵌套函数

以下示例显示使用具有短格式 YAML 的嵌套内部函数的有效模式。您不能连续嵌套短格式函数,因此 !GetAZs !Ref 之类的模式无效。

YAML

AvailabilityZone: !Select - 0 - !GetAZs Ref: 'AWS::Region'

YAML

AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref 'AWS::Region'

支持的函数

您可在 Ref 函数中使用 Fn::GetAZs 函数。