我正在尝试在VPC中获得专用子网,我使用的是Terraform文档https://www.terraform.io/docs/providers/aws/d/subnet_ids.html中的示例,但这给了我错误。
这是我的代码(我注释掉了过滤器,因此这应该获取所有子网-我的vpc具有3个公共子网和3个私有子网)
id = data.aws_subnet_ids...
在Error: Invalid index
on modules/global/data.tf line 20, in data "aws_subnet" "example":
12: id = data.aws_subnet_ids.example.ids[count.index]
|----------------
| count.index is 5
| data.aws_subnet_ids.example.ids is set of string with 6 elements
This value does not have any indices.
行上出现错误
我得到6次以下错误,每个索引1次
"${data.aws_subnet_ids.example.ids[count.index]}"
我正在使用HCL2,但以防万一我对所有具有相同结果的语句恢复到先前的内插($ terraform --version
Terraform v0.12.7
+ provider.aws v2.25.0
+ provider.template v2.1.2
)。
帮助?
谢谢
std::string firstname, lastname;
std::cout << "Please enter your full name:\n";
std::cin >> firstname >> lastname;
std::cout << "Your full name is : " << firstname << ' ' << lastname;
答案 0 :(得分:2)
Text
数据的输出是集合而不是列表。您需要将其转换为列表。您可以使用aws_subnet_ids
函数documented here来实现这一点。
您的代码可以更新如下:
tolist
然后可以在data "aws_subnet" "example" {
count = length(data.aws_subnet_ids.example.ids)
id = tolist(data.aws_subnet_ids.example.ids)[count.index]
}
数据内安全地迭代子网列表。但是请注意以下几点:
将设置值传递到列表以将其转换为列表。由于set元素未排序,因此结果列表将具有未定义的顺序,该顺序在特定的Terraform运行中将保持一致。
这意味着,如果您要访问特定的子网,它们将在Terraform计划生成之间的aws_subnet
列表中重新排序。