1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 特定字母代表的可用区对不同的AWS账户可以有不同的含义。例如,对于A账户,us-west-1a可能与B账户的us-west-1a不同。
在Cloudformation中,您可以使用以下代码来创建两个公共子网并确保它们在不同的可用区中创建:
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)
请注意,在上面的Cloudformation模板片段中,两个公共子网在AvailabilityZone:!Select [ 0,!GetAZs '' ]语句中选择了不同的数组索引,从而确保在两个不同的可用区中创建了两个子网。
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]
相关内容
- AWS 官方已更新 4 年前
