Amazon web services Terraform语法有助于将两个实例的实例ID包含到单个数组中

Amazon web services Terraform语法有助于将两个实例的实例ID包含到单个数组中,amazon-web-services,amazon-ec2,syntax,terraform,amazon-elb,Amazon Web Services,Amazon Ec2,Syntax,Terraform,Amazon Elb,这就是我的代码的外观 module "alb_api" { source = "./modules/load-balancer" env = "${lower(var.env)}" project = "api" vpc_id = "${data.aws_vpc.main.id}" public_subnet1_id = "${var.public_subnet1_i

这就是我的代码的外观

module "alb_api" {
  source = "./modules/load-balancer"
  env = "${lower(var.env)}"
  project = "api"
  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 = "/status"
  certificate_arn = "${var.certificate_arn}"
  alb_target_group_port = "1984"
  current_ec2_instance_ids = "${aws_instance.ec2[*].id}"
  next_ec2_instance_ids = "${aws_instance.next_ec2[*].id}"
}
我需要能够将两个实例的实例ID组合到一个数组中

期望值

ec2_instance_ids = "${aws_instance.ec2[*].id},${aws_instance.next_ec2[*].id}"
这给了我一个语法错误,有可能实现吗?正确的语法是什么

在模块内部,我将这些实例注册到负载平衡器,代码如下

resource "aws_alb_target_group_attachment" "alb_target_group_attachment" {
  count = length("${var.current_ec2_instance_ids}")
  target_group_arn = "${aws_alb_target_group.alb_target_group.arn}"
  target_id = "${var.current_ec2_instance_ids[count.index]}"
  port = "${var.alb_target_group_port}"
}

resource "aws_alb_target_group_attachment" "next_alb_target_group_attachment" {
  count = length("${var.next_ec2_instance_ids}")
  target_group_arn = "${aws_alb_target_group.alb_target_group.arn}"
  target_id = "${var.next_ec2_instance_ids[count.index]}"
  port = "${var.alb_target_group_port}"
}
我也需要把这些合并成一个

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_example-backend" {
  source = "./modules/load-balancer"
  env = "${lower(var.env)}"
  project = "example-backend"
  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 ="/status"
  certificate_arn = "${var.certificate_arn}"
  alb_target_group_port = "2010"
  ec2_instance_ids = concat(aws_instance.ec2[*].id,aws_instance.next_ec2[*].id)
}

要加入两个列表,
aws_instance.ec2[*].id
aws_instance.next_ec2[*].id
可以使用。由于您的语法是针对0.11的,因此应该是:

ec2_instance_ids = "${concat(aws_instance.ec2.*.id, aws_instance.next_ec2.*.id)}"
对于TF 0.12+:

ec2_instance_ids = concat(aws_instance.ec2[*].id, aws_instance.next_ec2[*].id)

太棒了,我会试试的,谢谢@MahelaWickramasekara没问题。让我知道它会怎样去。我得到这个错误的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在检查长度的时候我在我在检查长度的时候我在检查长度的时候我在我在检查长度的时候我在我在检查的时候我在我在我在检查长度的时候我的时候我在我在我在我在检查长度的时候我在我在检查长度的时候我在我在我在我在检查长度的时候我在我在我在检查长度的时候我在我在我在我在检查长度的时候我的时候我在我在我在我在我在我在我在检查长度的时候我在我在我在我在我在我在我在我在我在检查长度的时候我在我在从从模块的时候我在我在我在我在我在我在我组_附件:107:计数=长度$(var.var.ec2村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村村你用的是哪个版本的TF?✗ terraform--terraform v0.12.10版+provider.aws v2.68.0版
ec2_instance_ids = concat(aws_instance.ec2[*].id, aws_instance.next_ec2[*].id)