Одна задача Fargate продолжает выполняться

#django #amazon-web-services #database-migration #github-actions #aws-fargate

Вопрос:

У меня возникла проблема с одноразовой задачей fargate , она предназначена для запуска миграции базы данных, а затем остановки, но она продолжает оставаться в рабочем состоянии

это определение задачи :

 resource "aws_ecs_task_definition" "migrate" {
  family                   = "${var.project_name}-${var.environment}-migrate"
  network_mode             = "awsvpc"
  requires_compatibilities = ["FARGATE"]
  cpu                      = 512
  memory                   = 1024
  execution_role_arn       = aws_iam_role.ecs_task_execution_role.arn
  task_role_arn            = aws_iam_role.ecs_task_execution_role.arn

  container_definitions = <<DEFINITION
  [
   {
      "name": "${var.project_name}-migrate",
      "image": "${var.repository_url}:latest",
      "cpu": 512,
      "memory": 1024,
      "command": [
        "/bin/sh",
        "-c",
        "python manage.py migrate --no-input"
      ],
      "mountPoints": [],
      "environment": [
        {
          "name": "DJANGO_SETTINGS_MODULE",
          "value": "****"
        },
        {
          "name": "DB_HOST",
          "value": "****"
        },
        {
          "name": "DD_API_KEY",
          "value": "****"
        }
      ],
      "secrets": [
        {
          "name": "SECRETS",
          "valueFrom": "*****"
        }
      ],
      "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-group": "****",
        "awslogs-region": "****",
        "awslogs-stream-prefix": "******"
      }
      },
      "volumesFrom": []
    }

  ]
DEFINITION
}
 

и вот как я называю это из действий github

 aws ecs run-task --launch-type FARGATE --cluster cs-name  --task-definition $MIGRATE_TASK_ARN --network-configuration "awsvpcConfiguration={subnets=[${{ secrets.MIGRATE_TASK_SUBNET_IDA }}, ${{ secrets.MIGRATE_TASK_SUBNET_IDB }}],securityGroups=${{ secrets.MIGRATE_TASK_SECURITY_GROUP_ID }}}"

 

есть идеи, что случилось ?

Ответ №1:

Я думаю, это зависит от того, что command он делает. Когда основной процесс в контейнере завершится, контейнеры остановятся, и задача остановится. Один из способов проверить поведение-запустить что-то подобное ls (или подобное) и посмотреть, что произойдет. Мне интересно, связана ли проблема с тем, что вы вызываете оболочку, а затем программу на python, и когда программа выходит из оболочки, контейнер остается в живых? Вы пробовали просто запустить программу на python?

 "command": "python manage.py migrate --no-input",
 

Комментарии:

1. да, уже пробовал, хотя я вижу в журналах, что gunicorn запущен, чего, я думаю, быть не должно