数据可用区跳过AZ

时间:2019-08-29 20:59:54

标签: amazon-web-services terraform terraform-provider-aws

我正在尝试在AWS中每个区域的每个可用区创建子网。我可以读取aws_availability_zones data source,但是当我遍历列表时,它将返回abc-d023us-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-1bus-west-1a

1 个答案:

答案 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-az1usw1-az3,并随机分配ab或{{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已有很长时间了。