Проблема
Получение ip целевого типа, что несовместимо с режимом мостовой сети Ошибка при попытке создать службу ECS с существующим NLB, целевая группа которого использует IP в качестве целевого типа ,
Ошибка от Terraform, которая использовала его для создания всех ресурсов AWS.
Ошибка: InvalidParameterException: Предоставленная целевая группа arn: aws :asticloadbalancing: $ REGION : $ ACCOUNT: targetgroup ... имеет тип цели ip, который несовместим с режимом мостовой сети, указанным в определении задачи.
Вывод TF_DEBUG Terraform Github проблема # 11719 , кажется, указывает, что это ограничение, если Terraform (или его сообщение) является правильным.
2020-01-22T20:04:46.819Z [DEBUG] plugin.terraform-provider-aws_v2.45.0_x4: 2020/01/22 20:04:46 [DEBUG] [aws-sdk-go] {"__type":"InvalidParameterException","message":"The provided target group arn:aws:elasticloadbalancing:us-east-1:xxx:targetgroup/llprd20200122052638603300000006/a0a2d775807f6620 has target type ip, which is incompatible with the bridge network mode specified in the task definition."}
Вопрос
Пожалуйста, сообщите, если это может быть ограничение AWS. Насколько я до сих пор изучал документацию AWS, нет никакой информации о том, что тип цели IP не может использоваться для режима мостовой сети. Однако хотелось бы убедиться на 100%.
- Служба ECS - Создание балансировщика сетевой нагрузки - Настройка маршрутизации
Для Тип цели, выберите, регистрировать ли ваши цели с идентификатором экземпляра или IP-адресом . Важно Если в определении задачи вашей службы используется сетевой режим awsvp c (который требуется для типа запуска Fargate), вы должны выбрать ip в качестве целевого типа, а не экземпляра. Это связано с тем, что задачи, использующие сетевой режим awsvp c, связаны с сетевым интерфейсом elasti c, а не с экземпляром Amazon EC2. Вы не можете зарегистрировать экземпляры по идентификатору экземпляра, если они имеют следующие типы экземпляров: C1, CC1, CC2, CG1, CG2, CR1, G1, G2, HI1, HS1, M1, M2, M3 и T1. Вы можете зарегистрировать экземпляры этих типов по IP-адресу.
Terraform
resource "aws_lb_target_group" "this" {
count = length(var.listeners)
name_prefix = "${substr("${var.name}", 0, 6)}"
vpc_id = "${var.vpc_id}"
target_type = "ip"
port = 8080
protocol = "tcp"
...
}
Я не указал network_mode в конфигурации aws_ecs_task_definition , поэтому используется "мост" по умолчанию.
TF_DEBUG
...
2020-03-03T18:54:10.301+1100 [DEBUG] plugin.terraform-provider-aws_v2.50.0_x4: 2020/03/03 18:54:10 [DEBUG] [aws-sdk-go] {"__type":"InvalidParameterException","message":"The provided target group arn:aws:elasticloadbalancing:us-east-2:ACCOUNT:targetgroup/****/4689fc19ff99ca57 has target type ip, which is incompatible with the bridge network mode specified in the task definition."}
2020-03-03T18:54:10.301+1100 [DEBUG] plugin.terraform-provider-aws_v2.50.0_x4: 2020/03/03 18:54:10 [DEBUG] [aws-sdk-go] DEBUG: Validate Response ecs/CreateService failed, attempt 0/25, error InvalidParameterException: The provided target group arn:aws:elasticloadbalancing:us-east-2:ACCOUNT:targetgroup/****/4689fc19ff99ca57 has target type ip, which is incompatible with the bridge network mode specified in the task definition.
...
Среда
- Тип ECS - EC2, а не Fargate
- Использование Terraform v0.12.20 на Ubuntu "18.04.4 LTS (Bioni c Beaver) "