Ошибка: неподдерживаемый аргумент 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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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

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