Я использовал 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",
]
..который может быть необязательным, но убедитесь, что связь между моей целевой группой и балансировщиком нагрузки установлена, прежде чем мой сервис будет запущен.