我可以遍历多个区域的数据提供者来创建类似地图的东西吗?

Can I iterate over a data provider for multiple region to create something like a map?

我想在我的 Terraform 中创建一个地图或 beantalk 区域列表(用于 Route53 的东西),有没有比以下更优雅的方法来完成此操作:

data "aws_elastic_beanstalk_hosted_zone" "eb-us-east-2" {
  region = "us-east-2"
}

data "aws_elastic_beanstalk_hosted_zone" "eb-us-east-1" {
  region = "us-east-1"
}

# ... and so on

是否可以迭代 aws_elastic_beanstalk_hosted_zone 并在我可以使用的 vars 中获取每个区域的区域 ID?

您始终可以使用 count meta parameter:

遍历列表
variable "regions" {
  default = [
    "us-east-1",
    "us-east-2",
  ]
}

data "aws_elastic_beanstalk_hosted_zone" "eb_zones" {
  count  = "${length(var.regions)}"
  region = "${var.regions[count.index]}"
}

output "eb_zones" {
  value = "${data.aws_elastic_beanstalk_hosted_zone.eb_zones.*.id}"
}

这将输出以下内容:

Outputs:

eb_zones = [
    Z117KPS5GTRQ2G,
    Z14LCN19Q5QHIC
]