Terraform构建AZ ID到名称映射报错,请求解决方法
解决Terraform中通过AZ ID获取AZ名称的问题
你原代码报错的原因是data.aws_availability_zones.available.names返回的是字符串列表(仅包含AZ名称),不是包含zone_id和name的对象集合,遍历的时候az只是单个字符串,自然没有zone_id和name属性。
正确的做法是使用data.aws_availability_zones.available.zones,这个属性返回的是包含每个可用区详细信息的对象列表,每个对象都有name(比如eu-central-1a)和zone_id(比如euc1-az1)字段。
修改后的代码如下:
data "aws_availability_zones" "available" { state = "available" } locals { az_id_to_name_map = { for az in data.aws_availability_zones.available.zones : az.zone_id => az.name } }
之后你就可以通过已知的AZ ID获取对应的名称,比如:
# 假设已知AZ ID为euc1-az1 output "target_az_name" { value = local.az_id_to_name_map["euc1-az1"] }
这样就能得到对应的AZ名称eu-central-1a,满足部署AWS Glue连接时指定可用区名称的需求。
内容的提问来源于stack exchange,提问作者safex
相关产品推荐
相关产品推荐

