Похоже, вы пытаетесь зарегистрировать экземпляры кластера ECS в целевой группе ALB. Это не то, как вы должны отправлять traffi c в службу ECS через ALB.
Вместо этого вам нужно, чтобы ваша служба объединила задачи с целевой группой. Это будет означать, что если вы используете хост-сеть, то будут зарегистрированы только экземпляры с развернутой задачей. Если вы используете мостовую сеть, то он добавит временные порты, используемые вашей задачей, в вашу целевую группу (в том числе допускает наличие нескольких целей в одном экземпляре). И если вы используете awsvpc
сеть, то он будет регистрировать ENI каждой задачи, которую запускает служба.
Для этого вам следует использовать блок load_balancer
в ресурсе aws_ecs_service
. Пример может выглядеть примерно так:
resource "aws_ecs_service" "mongo" {
name = "mongodb"
cluster = "${aws_ecs_cluster.foo.id}"
task_definition = "${aws_ecs_task_definition.mongo.arn}"
desired_count = 3
iam_role = "${aws_iam_role.foo.arn}"
load_balancer {
target_group_arn = "${aws_lb_target_group.lb_target_group_somm.arn}"
container_name = "mongo"
container_port = 8080
}
}
Если бы вы использовали мостовую сеть, это означало бы, что задачи доступны в диапазоне временных портов на экземплярах, поэтому правило группы безопасности должно выглядеть следующим образом. :
resource "aws_security_group_rule" "alb_to_ecs" {
type = "ingress"
from_port = 32768 # ephemeral port range for bridge networking tasks
to_port = 60999 # cat /proc/sys/net/ipv4/ip_local_port_range
protocol = "TCP"
source_security_group_id = "${module.alb.alb_security_group_id}"
security_group_id = "${module.ecs_cluster.ecs_instance_security_group_id}"
}