如何使用terraform从VPC获取子网列表
我已尝试使用以下代码获取所有子网ID,以便使用terraform添加aws批处理:如何使用terraform从VPC获取子网列表,terraform,terraform-provider-aws,aws-batch,Terraform,Terraform Provider Aws,Aws Batch,我已尝试使用以下代码获取所有子网ID,以便使用terraform添加aws批处理: data "aws_subnet_ids" "test_subnet_ids" { vpc_id = "default" } data "aws_subnet" "test_subnet" { count = "${length(data.aws_subnet_ids.test_subnet_ids.ids)}" id = "${tolist(data.aws_subnet_ids.test_s
data "aws_subnet_ids" "test_subnet_ids" {
vpc_id = "default"
}
data "aws_subnet" "test_subnet" {
count = "${length(data.aws_subnet_ids.test_subnet_ids.ids)}"
id = "${tolist(data.aws_subnet_ids.test_subnet_ids.ids)[count.index]}"
}
output "subnet_cidr_blocks" {
value = ["${data.aws_subnet.test_subnet.*.id}"]
}
幸运的是,当我进行这样的测试时,它运行良好。但当我尝试与批量地形集成时,如:
resource "aws_batch_compute_environment" "test-qr-processor" {
compute_environment_name = "test-qr-processor-test"
compute_resources {
instance_role = "${aws_iam_instance_profile.test-ec2-role.arn}"
instance_type = [
"optimal"
]
max_vcpus = 256
min_vcpus = 0
security_group_ids = [
"${aws_security_group.test-processor-batch.id}"
]
subnets = ["${data.aws_subnet.test_subnet.*.id}"]
type = "EC2"
}
service_role = "${aws_iam_role.test-batch-service-role.arn}"
type = "MANAGED"
depends_on = [ "aws_iam_role_policy_attachment.test-batch-service-role" ]
}
我遇到了以下错误消息
错误:属性值类型不正确
在terraform.tf第142行,参考资料中
“aws\u批处理\u计算\u环境”“测试处理器”:142:子网=
[“${data.aws_subnet.test_subnet.*.id}”]
属性“子网”的值不正确:元素0:字符串
必需的
请告诉我原因,谢谢。“${data.aws\u subnet.test\u subnet.*.id}”
已经是字符串数组类型
您应该输入不带[]
编写如下代码:
subnets=“${data.aws\u subnet.test\u subnet.*.id}”
见:
以下是关于资源:aws\u批处理\u计算\u环境的信息
如何筛选出公共子网并仅获取私有子网?@Shell_Leko嗨,你可以在@GNOKOHEAT中找到该文件,该文件已经以顶部的locals变量中分隔的私有子网和公共子网开始。它没有回答Shell_Leko的问题