💾 Archived View for cfdocs.wetterberg.nu › intrinsic-function-reference-getavailabilityzones.gemini captured on 2023-11-04 at 12:58:02. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-03)
-=-=-=-=-=-=-
The intrinsic function `Fn::GetAZs` returns an array that lists Availability Zones for a specified region in alphabetical order. Because customers have access to different Availability Zones, the intrinsic function `Fn::GetAZs` enables template authors to write templates that adapt to the calling user's access. That way you don't have to hard-code a full list of Availability Zones for a specified region.
For the EC2-Classic platform, the `Fn::GetAZs` function returns all Availability Zones for a region. For the EC2\-VPC platform, the `Fn::GetAZs` function returns only Availability Zones that have a default subnet unless none of the Availability Zones has a default subnet; in that case, all Availability Zones are returned.
Similarly to the response from the `describe-availability-zones` AWS CLI command, the order of the results from the `Fn::GetAZs` function is not guaranteed and can change when new Availability Zones are added.
IAM permissions
The permissions that you need in order to use the `Fn::GetAZs` function depend on the platform in which you're launching Amazon EC2 instances. For both platforms, you need permissions to the Amazon EC2 `DescribeAvailabilityZones` and `DescribeAccountAttributes` actions. For EC2-VPC, you also need permissions to the Amazon EC2 `DescribeSubnets` action.
{ "Fn::GetAZs" : "region" }
Syntax for the full function name:
Fn::GetAZs: region
Syntax for the short form:
!GetAZs region
region
The name of the region for which you want to get the Availability Zones.
You can use the `AWS::Region` pseudo parameter to specify the region in which the stack is created. Specifying an empty string is equivalent to specifying `AWS::Region`.
The list of Availability Zones for the region.
For these examples, AWS CloudFormation evaluates `Fn::GetAZs` to the following array—assuming that the user has created the stack in the `us-east-1` region:
`[ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d" ]`
1. { "Fn::GetAZs" : "" } 2. { "Fn::GetAZs" : { "Ref" : "AWS::Region" } } 3. { "Fn::GetAZs" : "us-east-1" }
1. Fn::GetAZs: "" 2. Fn::GetAZs: 3. Ref: "AWS::Region" 4. Fn::GetAZs: us-east-1
The following example uses `Fn::GetAZs` to specify a subnet's Availability Zone:
"mySubnet" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : "10.0.0.0/24", "AvailabilityZone" : { "Fn::Select" : [ "0", { "Fn::GetAZs" : "" } ] } } }
mySubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: Fn::Select: - 0 - Fn::GetAZs: ""
The following examples show valid patterns for using nested intrinsic functions using short form YAML. You can't nest short form functions consecutively, so a pattern like `!GetAZs !Ref` is invalid.
1. AvailabilityZone: !Select 2. - 0 3. - !GetAZs 4. Ref: 'AWS::Region'
1. AvailabilityZone: !Select 2. - 0 3. - Fn::GetAZs: !Ref 'AWS::Region'
You can use the `Ref` function in the `Fn::GetAZs` function.