Не работает переполнение контейнера запланированной задачи ECS для точки входа

#amazon-cloudwatch #amazon-ecs #terraform-provider-aws

#amazon-cloudwatch #amazon-ecs #terraform-поставщик-aws

Вопрос:

Я создаю запланированную задачу ECS в Terraform. Когда я пытаюсь переопределить определение контейнера для entryPoint , результирующая задача не использует переопределенное entryPoint . Однако, если я попытаюсь переопределить command , он работает нормально (добавляет новую команду в дополнение к существующей точке входа). Я не могу найти в документах ничего, что наводит меня на мысль, что entryPoint переопределение не поддерживается, но это может быть так?

Ниже приведен код для цели события Cloudwatch в terraform

 resource "aws_cloudwatch_event_target" "ecs_task" {
  target_id = "run-${var.task_name}-scheduled"
  arn       = "${var.cluster_arn}"
  rule      = "${aws_cloudwatch_event_rule.ecs_task_event_rule.name}"
  role_arn  = "${aws_iam_role.ecs_event.arn}"

  ecs_target = {
    launch_type = "${var.launch_type}"
    network_configuration = {
      subnets = ["${var.subnet_ids}"]
      security_groups = ["${var.security_group_ids}"]
    }
    task_count = 1
    task_definition_arn = "${var.task_arn}"
  }

  input = <<DOC
{
  "containerOverrides": [
    {
      "name": "${var.task_name}",
      "entryPoint": ${jsonencode(var.command_overrides)}
    }
  ]
}
DOC
}
  

Это создает новую запланированную задачу на консоли AWS, где поле ввода выглядит следующим образом:

 {
    "containerOverrides": [
        {
            "name": "my-container-name",
            "entryPoint": [
                "sh",
                "/my_script.sh"
            ]
        }
    ]
}
  

Однако задачи, запускаемые этим правилом, не имеют переопределения точки входа и используют точку входа, определенную в исходном определении задачи.

TLDR: Как я могу переопределить точку входа для запланированной задачи?

Ответ №1:

На сегодняшний день только определенное количество полей может быть переопределено, поскольку запланированная задача в конечном итоге использует run-task API. Эти поля следующие:

  • command
  • environment
  • taskRoleArn
  • cpu
  • memory
  • memoryReservation
  • resourceRequirements

Определения контейнеров для других полей, таких как entryPoint , portMappings , и, не поддерживаются logConfiguration .

Решение заключается в использовании command вместо entryPoint в исходном определении задачи, поскольку command его можно переопределить, но entryPoint нельзя.