这个错误通常是因为 terraform 的 ECS Provider 不支持使用 load balancer 参数。解决方法可能是手动编写 load balancer 的资源,并将其与 ECS 实例集成。以下是一个示例:
resource "aws_lb" "example" {
name = "example-load-balancer"
internal = false
load_balancer_type = "application"
security_groups = [
aws_security_group.example_sg.id
]
subnets = [
aws_subnet.example_subnets[0].id,
aws_subnet.example_subnets[1].id
]
}
resource "aws_lb_listener" "example" {
load_balancer_arn = aws_lb.example.arn
port = "80"
protocol = "HTTP"
default_action {
target_group_arn = aws_alb_target_group.example.arn
type = "forward"
}
}
resource "aws_alb_target_group" "example" {
name = "example-target-group"
port = "80"
protocol = "HTTP"
vpc_id = aws_vpc.example.id
}
resource "aws_ecs_service" "example" {
name = "example"
cluster = aws_ecs_cluster.example.id
task_definition = aws_ecs_task_definition.example.arn
desired_count = 1
depends_on = [
aws_lb_listener.example,
aws_alb_target_group.example
]
network_configuration {
subnets = aws_subnet.example_subnets.*.id
security_groups = [
aws_security_group.example_sg.id
]
assign_public_ip = true
}
load_balancer {
target_group_arn = aws_alb_target_group.example.arn
container_name = "example-container"
container_port = "80"
}
}
这里创建了一个 load balancer、listener、target group 和 ECS 服务。在 ECS 服务中,load_balancer
块用于将服务注册到 ALB,而不是使用 terraform ecs with load_balancer
参数。