Как остановить задачу AWS -ECS после того, как она выполнила свою задачу? - PullRequest
0 голосов
/ 28 апреля 2020

Я развернул задачу ECS, которая создает резервную копию базы данных. После этого задача остается в состоянии выполнения. У кого-нибудь есть идеи, как закончить задачу? Я использую Docker Container (Spring Boot) и развертываю задачу с помощью Terraform.

РЕДАКТИРОВАТЬ: Моя Terraform выглядит так:

resource "aws_ecs_task_definition" "task_definition" {
  family                   = "${var.application_name}"
  container_definitions    =  "${data.template_file.container_definition_tpl.rendered}"
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  execution_role_arn       = "arn:aws:iam::${var.account_id}:role/app_execution_role"
  task_role_arn            = "arn:aws:iam::${var.account_id}:role/app_task_role"
  cpu                      = 256
  memory                   = 512
}

resource "aws_cloudwatch_event_rule" "scheduled_task" {
  name                = "${var.name}_${var.environment}_scheduled_task"
  description         = "Run ${var.name}_${var.environment} task at a scheduled time rate (1 day)"
  schedule_expression = "cron(* 9 * ? *)"
}

resource "aws_cloudwatch_event_target" "scheduled_task" {
  target_id = "${var.name}_${var.environment}_scheduled_task_target"
  rule      = "${aws_cloudwatch_event_rule.scheduled_task.name}"
  arn       = "${data.aws_ecs_cluster.ecs_cluster.id}"
  role_arn  = "${aws_iam_role.ecs_events.arn}"

  ecs_target {
    task_count          =  1
    task_definition_arn = "${aws_ecs_task_definition.task_definition.arn}"
    launch_type="FARGATE"
    platform_version="LATEST"


    network_configuration {
      assign_public_ip = false
      security_groups= [data.aws_security_group.ecs_security_group.id]
      subnets =data.aws_subnet_ids.private_subnet_ids.ids
    }
  } 

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

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

В конце концов решение было очень простым. Проблема: Задача выполнялась в ECS-Serivce и также называлась запланированным событием. Это вызвало много проблем, потому что задача выполнялась дважды в указанное время. Решение : В конце концов, решение состояло в том, чтобы удалить службу ECS, поскольку задание не соответствовало требованиям службы ECS. Ответ состоял в том, чтобы вызвать задачу только через задачу Расписания. Кроме того, реализация должна была закрыть контейнер, что обеспечило автоматическое закрытие задачи после ее завершения и отсутствия ненужных задач.

1 голос
/ 28 апреля 2020

Мы столкнулись с подобными ситуациями с нашими запланированными задачами ECS. Причин может быть множество: от неправильной обработки ошибок, проблем с синхронизацией или использования API блокировки.

Я предлагаю вам взглянуть на свой код, пытаясь идентифицировать любую из упомянутых категорий, если вы можете Тогда не можете найти его:

  • Добавьте записи в журнале, чтобы приблизиться к точке, в которой они застряли.
  • Упростите свою функцию, пока не добьетесь исключения оскорбительной части.
...