【问题标题】:Fargate oneoff task keeps runningFargate oneoff 任务继续运行
【发布时间】:2021-09-03 03:27:34
【问题描述】:

我遇到了一个 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 }}}"

知道有什么问题吗?

【问题讨论】:

    标签: django amazon-web-services database-migration github-actions aws-fargate


    【解决方案1】:

    我想这取决于command 的作用。当容器中的主进程退出时,容器停止,任务也将停止。检查行为的一种方法是运行ls(或类似的)之类的东西,看看会发生什么。我想知道问题是否是由于您调用 shell 然后是 python 程序,当程序退出时,shell 使容器保持活动状态?你试过只运行 python 程序吗?

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

    【讨论】:

    • 是的,已经尝试过了,虽然我可以在日志中看到 gunicorn 已启动,但我猜应该不是这样
    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多