AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Fn::GetAZs

内部函数 Fn::GetAZs 返回列出了指定区域所有可用区的数组。因为客户可访问不同的可用区,模板作者可通过内部函数 Fn::GetAZs 写出适用于调用用户访问的模板。这样一来,您无需对指定区域的可用区的完整列表进行硬编码。

重要

对于 EC2-Classic 平台,Fn::GetAZs 函数返回某个区域的所有可用区。对于 EC2-VPC 平台,Fn::GetAZs 函数仅返回有默认子网的可用区,除非所有可用区都没有默认子网,在后面这种情况下,将返回所有可用区。

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

IAM 权限

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

声明

JSON

{ "Fn::GetAZs" : "region" }

YAML

完整函数名称的语法:

Fn::GetAZs: region

短格式的语法:

!GetAZs region

参数

区域

您想获得其可用区的区域之名称。

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

返回值

该区域的可用区列表。

示例

对于这些示例,AWS CloudFormation 假设用户已在 us-east-1 区域中创建堆栈,并在此前提下根据以下数组评估 Fn::GetAZs

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

JSON

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

YAML

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

指定子网的可用区

下面的示例使用 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: ""

支持的函数

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