Amazon-Ecs

如何確定容器 ID 以便 Terraform 可以將其附加到 ALB 目標組?

  • March 12, 2017

我使用 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”?

我已經設法解決了這個問題!

我認為您不需要自己將項目附加到目標組,這是有道理的,因為這一切在使用控制台嚮導時都會神奇地發生。

我所做的是刪除任何附加目標但定義 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",
]

..這可能不是必需的,但請確保我的目標組和負載均衡器之間的關係在我的服務啟動之前就位。

引用自:https://serverfault.com/questions/837748