【发布时间】:2022-07-23 15:07:52
【问题描述】:
我正在处理的模块代表一个部署到 VPC 的应用程序。 VPC 在别处声明。
相关数据路径包括以下资源:
variable \"vpc_id\" { }
data \"aws_subnets\" \"private\" {
filter {
name = \"vpc-id\"
values = [data.aws_vpc.vpc.id]
}
filter {
name = \"tag:Visibility\"
values = [\"private\"]
}
}
data \"aws_subnet\" \"private\" {
for_each = toset(data.aws_subnets.private.ids)
vpc_id = data.aws_vpc.vpc.id
id = each.value
}
resource \"aws_rds_cluster\" \"database\" {
availability_zones = data.aws_subnet.private.*.availability_zones
}
这感觉像是正确的语法,尽管它是一个冗长的数据检索链。然而,当我terraform plan它时:
│ Error: Unsupported attribute
│
│ on ../../../../../appmodule/rds_postgres.tf line 23, in resource \"aws_rds_cluster\" \"webapp\":
│ 23: availability_zones = data.aws_subnet.private.*.availability_zone_id
│
│ This object does not have an attribute named \"availability_zone_id\".
我正在使用 aws-provider 4.18.0 和 Terraform v1.1.2。 subnet data source 的文档显示 availability_zone_id
我在这里遗漏了一些明显的东西吗?
-
是的,使用 for_each 创建键值对。您可能可以使用
values内置函数。 -
像
values(data.aws_subnet.private)[*].availability_zone这样的东西。
标签: amazon-web-services terraform terraform-provider-aws