Назад | Перейти на главную страницу

Как определить идентификатор контейнера, чтобы Terraform мог присоединить его к целевой группе ALB?

Я использовал Terraform для создания VPC, подсетей, экземпляров ECS, маршрутизации и определения задачи, которые я могу запустить через консоль AWS. Это дает мне несколько экземпляров моего небольшого веб-приложения, работающего в нескольких контейнерах.

Мне также удалось создать службу с помощью балансировщиков нагрузки приложений в консоли, но я терплю неудачу, когда пытаюсь автоматизировать этот шаг. Я не могу прикрепить контейнер к целевой группе с помощью 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 (обязательно) Идентификатор цели. Это идентификатор экземпляра для экземпляра или идентификатор контейнера для контейнера ECS.

Я не знаю, как указать идентификатор контейнера для контейнера ECS. В консоли на странице, где вы регистрируете контейнер в целевой группе, есть раскрывающийся список с моим контейнером, идентифицированным как «nancy_template: 0: 5000».

"nancy_template" или "nancy_template: 0: 5000" оба дают мне ошибку:

Ошибка регистрации целей в целевой группе

Где я могу получить «идентификатор контейнера», в котором говорится, что мне нужно заполнить свойство target_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",
]

..который может быть необязательным, но убедитесь, что связь между моей целевой группой и балансировщиком нагрузки установлена, прежде чем мой сервис будет запущен.