1 Respuesta
- Más nuevo
- Más votos
- Más comentarios
0
Availability Zones represented by a particular letter can mean different AZs to different AWS accounts. For example for Account A us-west-1a can be different from what us-west-1a is for account B.
In Cloudformation, you can use
PublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]
CidrBlock: !Ref PublicSubnet1CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName} Public Subnet (AZ1)
PublicSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs '' ]
CidrBlock: !Ref PublicSubnet2CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName} Public Subnet (AZ2)
Note how different array indexes are chosen for the two Public Subnets in the AvailabilityZone: !Select [ 0, !GetAZs '' ] statement in the Cloudformation template snippet above, thereby ensuring the two subnets are created in two different AZs
I see a similar concept being used in Terraform - https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones
# Declare the data source
data "aws_availability_zones" "available" {
state = "available"
}
# e.g., Create subnets in the first two available availability zones
resource "aws_subnet" "primary" {
availability_zone = data.aws_availability_zones.available.names[0]
# ...
}
resource "aws_subnet" "secondary" {
availability_zone = data.aws_availability_zones.available.names[1]
...
}
Contenido relevante
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 8 meses
This is also publicly documented behaviour: https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html
And we have some naming convention guidance: https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.html