Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 传递ec2实例ID时terraform中的属性值类型错误_Amazon Web Services_Amazon Ec2_Terraform_Amazon Elb - Fatal编程技术网

Amazon web services 传递ec2实例ID时terraform中的属性值类型错误

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

我正在使用下面的代码创建3个ec2实例并向负载平衡器注册它们

变量 ec2创建 向负载平衡器注册 但是当我传递ec2实例ID时,如下所示

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.