我正在尝试在AWS中每个区域的每个可用区创建子网。我可以读取aws_availability_zones
data source,但是当我遍历列表时,它将返回abc-d023
和us-west-1a
(不存在)。
us-west-1c
我希望它返回data "aws_availability_zones" "available" {}
resource "aws_subnet" "example" {
count = length(data.aws_availability_zones.all.names)
vpc_id = aws_vpc.main.id
cidr_block = cidrsubnet(var.cidr, 8, count.index)
availability_zone = element(data.aws_availability_zones.all.names, count.index)
map_public_ip_on_launch = true
}
和us-west-1a
。
当前返回us-west-1b
和us-west-1a
。
答案 0 :(得分:1)
可用区域名称为randomised:
为确保资源在区域的可用区中分配,我们将可用区独立映射到每个帐户的名称。例如,您的AWS账户的可用区us-east-1a可能与另一个AWS账户的us-east-1a不在同一位置。有关更多信息,请参阅Amazon EC2用户指南中的区域和可用区。
要标识资源相对于帐户的位置,必须使用AZ ID,它是可用区的唯一且一致的标识符。例如,use1-az1是us-east-1区域的AZ ID,并且在每个AWS账户中都位于同一位置。
us-west-1
是一个有点怪异的区域,具有2个可用区:usw1-az1
和usw1-az3
,并随机分配a
,b
或{{1 }}。
c
从另一个AWS帐户运行:
aws ec2 describe-availability-zones --region us-west-1
{
"AvailabilityZones": [
{
"State": "available",
"ZoneName": "us-west-1a",
"Messages": [],
"ZoneId": "usw1-az3",
"RegionName": "us-west-1"
},
{
"State": "available",
"ZoneName": "us-west-1b",
"Messages": [],
"ZoneId": "usw1-az1",
"RegionName": "us-west-1"
}
]
}
我不知道aws ec2 describe-availability-zones --region us-west-1
{
"AvailabilityZones": [
{
"State": "available",
"ZoneName": "us-west-1b",
"Messages": [],
"ZoneId": "usw1-az3",
"RegionName": "us-west-1"
},
{
"State": "available",
"ZoneName": "us-west-1c",
"Messages": [],
"ZoneId": "usw1-az1",
"RegionName": "us-west-1"
}
]
}
发生了什么,但是它不再是有效的可用区,而看着old gist of mine已有很长时间了。