我使用 Terraform 创建了 VPC、子网、ECS 实例、路由和任务定义,我可以通过 AWS 控制台运行这些定义。这为我在多个容器中运行的小型 Web 应用程序提供了一些实例。
我还能够在控制台中使用应用程序负载均衡器创建服务,但当我尝试自动执行该步骤时却失败了。我无法使用 Terraform 将容器附加到目标组。
resource "aws_alb_target_group_attachment" "test" {
target_group_arn = "${aws_alb_target_group.test.arn}"
target_id = "${aws_instance.test.id}"
port = 80
}
target_id (必需) 目标的 ID。这是实例的实例 ID,或 ECS 容器的容器 ID。
我不知道如何为 ECS 容器指定容器 ID。在控制台中,在目标组中注册容器的页面有一个下拉列表,其中我的容器标识为“nancy_template:0:5000”。
“nancy_template”或“nancy_template:0:5000”都给出了错误:
向目标组注册目标时出错
我从哪里获得文档中说我需要填充“target_id”属性的“容器 ID”?
答案1
我已经修复了这个问题!
我认为您不需要自己将项目附加到目标组,这是有道理的,因为使用控制台向导时一切都会神奇地发生。
我所做的是删除任何附加目标的尝试,但定义一个 ALB 监听器:
resource "aws_alb_listener" "web_front_end" {
load_balancer_arn = "${aws_alb.nancy_template_alb.id}"
port = "80"
protocol = "HTTP"
default_action {
target_group_arn = "${aws_alb_target_group.web-targetgroup.id}"
type = "forward"
}
}
并将其添加到我的服务定义中:
depends_on = [
"aws_alb_listener.web_front_end",
]
..这可能不是必需的,但要确保在我的服务启动之前我的目标组和负载均衡器之间的关系已经到位。