Ошибка: неподдерживаемый аргумент terraform ecs с балансировщиком нагрузки

Ценю вашу поддержку в решении этой проблемы, у меня есть файл main.tf, как показано ниже

resource "aws_ecs_service" "nodejs-service" {
  name            = "nodejs-service"
  cluster         = aws_ecs_cluster.project_cluster.id
  task_definition = aws_ecs_task_definition.nodejs.arn
  launch_type     = "FARGATE"
  desired_count   = 1

  load_balancer {
    target_group_arns = module.alb.target_group_arns
    container_name   = "${aws_ecs_task_definition.nodejs.family}"
    container_port   = 8080 # Specifying the container port
  }

  network_configuration {
    subnets          = var.vpc.public_subnets
    assign_public_ip = true
  }
}

module "alb" {
  source             = "terraform-aws-modules/alb/aws"
  version            = "~> 8.0"
  name               = var.namespace
  load_balancer_type = "application"
  vpc_id             = var.vpc.vpc_id
  subnets            = var.vpc.public_subnets
  security_groups    = [var.sg.lb]

  http_tcp_listeners = [
    {
      port               = 80
      protocol           = "HTTP"
      target_group_index = 0
    }
  ]

  target_groups = [
    { name_prefix      = "nodejs-service"
      backend_protocol = "HTTP"
      backend_port     = 8080
      target_type      = "instance"
    }
  ]
}

Я получаю сообщение об ошибке

│ Error: Unsupported argument
│
│   on modules/ecs/main.tf line 58, in resource "aws_ecs_service" "nodejs-service":
│   58:     target_group_arns = module.alb.target_group_arns
│
│ An argument named "target_group_arns" is not expected here. Did you mean "target_group_arn"?

Даже если я изменил target_groups в параметрах службы на target_group_arn, я получаю сообщение об ошибке «target_group_arn» не определено также с module.alb.target_groups[0] такая же ошибка появляется с планом терраформирования

  load_balancer {
    target_group_arn   = module.alb.target_groups[0]
    container_name   = "${aws_ecs_task_definition.nodejs.family}"
    container_port   = 8080 # Specifying the container port
  }

Ошибка:

│ Error: Unsupported attribute
│
│   on modules/ecs/main.tf line 58, in resource "aws_ecs_service" "nodejs-service":
   58:     target_group_arn   = module.alb.target_groups[0]
     ├────────────────
     │ module.alb is a object

 This object does not have an attribute named "target_groups".

Согласно файлу main.tf, как я могу выбрать целевую группу, которая определена в модуле alb

Спасибо,

Попробовал: план терраформирования и ожидаемый альбом с целевой группой, указывающей на контейнер nodejs-service

terraform {
  required_version = ">= 1.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = ">= 4.27"
    }
    null = {
      source  = "hashicorp/null"
      version = ">= 2.0"
    }
  }
}

"если я изменил target_groups в параметрах службы" - что вы имеете в виду? Пожалуйста, добавьте код с этим изменением и ПОЛНЫМ сообщением об ошибке.

Marcin 14.02.2023 02:21
"target_group_arns" опция была добавлена ​​в terraform aws provider 2.22
Jatin Mehrotra 14.02.2023 02:46

@AhmedOmar, можете ли вы добавить точную версию модуля, версию terraform, а также поставщика terraform для версии AWS?

Marko E 14.02.2023 08:35

@MarkoE был обновлен в почтовом модуле версии 5, затем я изменил его на 8 и запустил его с новой версией модуля и terraform 4.27.

Ahmed Omar 14.02.2023 14:18

@AhmedOmar Вы запустили terraform init после смены версии?

Marko E 14.02.2023 14:40

@MarkoE да, как вы можете видеть github.com/terraform-aws-modules/terraform-aws-alb/blob/mast‌​er/… поэтому он должен принять мой вывод target_group_arns, но все та же ошибка, возможно ли смоделировать этот main.tf с помощью простого определения задачи с вашей стороны? и спасибо за ваши усилия

Ahmed Omar 14.02.2023 14:59
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
0
6
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вывод из модуля alb представляет собой массив.

В вашем случае это будет module.alb.target_group_arns[0]

Замените его этим кодом

load_balancer {
    target_group_arns = module.alb.target_group_arns[0]
    container_name   = "${aws_ecs_task_definition.nodejs.family}"
    container_port   = 8080 # Specifying the container port
  }

Спасибо Джатин за ваш ответ, теперь я получаю следующую ошибку. Этот объект не имеет атрибута с именем «target_groups».

Ahmed Omar 14.02.2023 04:29
│ Error: Unsupported argument │ │ on modules/ecs/main.tf line 58, in resource "aws_ecs_service" "nodejs-service": │ 58: target_group_arns = module.alb.target_group_arns[0] │ │ An argument named "target_group_arns" is not expected here. Did you mean "target_group_arn"?
Ahmed Omar 14.02.2023 04:49

Проверьте версию вашего провайдера terraform aws, я полагаю, это старая версия. Если его старая версия, попробуйте target_group_arn для ресурса ecs. Даже в примере кода это target_group_arn load_balancer { target_group_arn = aws_lb_target_group.foo.arn container_name = "mongo" container_port = 8080 } Registry.terraform.io/providers/hashicorp/aws/latest/docs/…

Jatin Mehrotra 14.02.2023 04:52

Служба не может получить доступ к целевой группе в модуле alb, извините, я новичок в terraform, поэтому я применяю некоторые задачи из книги terraform-in-action ссылка, но с ecs fargate не обычный ec2

Ahmed Omar 14.02.2023 04:54

Почему используется такая старая версия? какая-то конкретная причина? текущая версия модуля использует 8.0 version = "~> 8.0" Попробуйте прочитать этот готический ридми, github.com/terraform-aws-modules/terraform-aws-alb/tree/v8.3‌​.1

Jatin Mehrotra 14.02.2023 07:06

Я сделал и изменил версию на 8.0 и поставщика aws на 4, но все равно та же проблема, я создал новый ресурс alb, и теперь он работает

Ahmed Omar 14.02.2023 14:09

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

Jatin Mehrotra 14.02.2023 14:10

Мне нужно 15 репутации, чтобы я мог проголосовать

Ahmed Omar 14.02.2023 15:30
Ответ принят как подходящий

Проблема не в модуле, а в аргументе, который вы пытаетесь использовать в ресурсе aws_ecs_service. В настоящее время вы устанавливаете его на target_group_arns, в то время как аргумент в единственном числе, то есть target_group_arn [1]:

  load_balancer {
    target_group_arn = module.alb.target_group_arns[0]
    container_name   = "${aws_ecs_task_definition.nodejs.family}"
    container_port   = 8080 # Specifying the container port
  }

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


[1] https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#target_group_arn

Сделано, но теперь я получаю это `module.alb is a object` This object does not have an attribute named "target_group".

Ahmed Omar 14.02.2023 15:23

Вы дословно скопировали и вставили вышеизложенное?

Marko E 14.02.2023 15:44

Я скопировал это сейчас, и оно наконец-то работает, большое спасибо @MarkoE

Ahmed Omar 14.02.2023 16:17

Другие вопросы по теме