Amazon web services 传递ec2实例ID时terraform中的属性值类型错误
我正在使用下面的代码创建3个ec2实例并向负载平衡器注册它们 变量 ec2创建 向负载平衡器注册 但是当我传递ec2实例ID时,如下所示Amazon web services 传递ec2实例ID时terraform中的属性值类型错误,amazon-web-services,amazon-ec2,terraform,amazon-elb,Amazon Web Services,Amazon Ec2,Terraform,Amazon Elb,我正在使用下面的代码创建3个ec2实例并向负载平衡器注册它们 变量 ec2创建 向负载平衡器注册 但是当我传递ec2实例ID时,如下所示 module "alb_engine-ui" { source = "./modules/load-balancer" env = "${lower(var.env)}" project = "engine-ui" vpc_id = "${data.aws
module "alb_engine-ui" {
source = "./modules/load-balancer"
env = "${lower(var.env)}"
project = "engine-ui"
vpc_id = "${data.aws_vpc.main.id}"
public_subnet1_id = "${var.public_subnet1_id}"
public_subnet2_id = "${var.public_subnet2_id}"
health_check_target_group_path = "/"
certificate_arn = "${var.certificate_arn}"
alb_target_group_port = "2016"
ec2_instance_ids = ["${aws_instance.ec2[*].id}"]
}
我得到下面的错误
Error: Incorrect attribute value type
on provisioners/different-box/modules/load-balancer/resources.tf line 109, in resource "aws_alb_target_group_attachment" "alb_target_group_attachment":
109: target_id = "${var.ec2_instance_ids[count.index]}"
Inappropriate value for attribute "target_id": string required.
是否有办法避免此错误并将ec2 id传递给列表?${aws_instance.ec2[*].id}已经是一个id列表,因此如果将其括在方括号中,它将成为一个列表
删除方括号会将其保留为字符串列表,因此在对其进行索引时,会得到一个字符串,这是目标\u id参数所需要的。${aws\u instance.ec2[*].id}已经是一个id列表,因此将其包装在方括号中会使其成为列表。放下方括号,一切都会好起来的。
resource "aws_alb_target_group_attachment" "alb_target_group_attachment" {
count = length("${var.ec2_instance_ids}")
target_group_arn = "${aws_alb_target_group.alb_target_group.arn}"
target_id = "${var.ec2_instance_ids[count.index]}"
port = "${var.alb_target_group_port}"
}
module "alb_engine-ui" {
source = "./modules/load-balancer"
env = "${lower(var.env)}"
project = "engine-ui"
vpc_id = "${data.aws_vpc.main.id}"
public_subnet1_id = "${var.public_subnet1_id}"
public_subnet2_id = "${var.public_subnet2_id}"
health_check_target_group_path = "/"
certificate_arn = "${var.certificate_arn}"
alb_target_group_port = "2016"
ec2_instance_ids = ["${aws_instance.ec2[*].id}"]
}
variable "ec2_instance_ids" {
description = "the ec2 instance ids to be used for alb target group"
type = "list"
}
Error: Incorrect attribute value type
on provisioners/different-box/modules/load-balancer/resources.tf line 109, in resource "aws_alb_target_group_attachment" "alb_target_group_attachment":
109: target_id = "${var.ec2_instance_ids[count.index]}"
Inappropriate value for attribute "target_id": string required.