完成任务后,如何停止AWS-ECS-Task?

时间:2020-04-28 11:00:28

标签: amazon-web-services terraform amazon-ecs

我已经部署了ECS任务,该任务可以备份数据库。完成此操作后,任务将保持运行状态。有谁知道如何结束任务?

我使用Docker容器(春季启动),并使用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
    }
  } 

我有一个计划的任务,每天运行一次。但是它创建了一个新任务,另一个任务仍然是RUNNUNG,所以一个星期后我将有7个任务。

2 个答案:

答案 0 :(得分:2)

最后,解决方案非常简单。

问题:
该任务在ECS服务中运行,也称为计划事件。这引起了很多问题,因为任务在给定的时间运行了两次。

解决方案
最后,解决方案是删除ECS服务,因为该作业不满足ECS服务的要求。答案是仅通过计划任务调用该任务。另外,该实现还必须关闭容器,以确保在任务完成时,该任务将自动关闭,并且那里没有不必要的任务。

答案 1 :(得分:1)

我们的ECS计划任务遇到了类似情况。错误的错误处理,同步问题或使用锁定的API,可能有很多原因导致它卡住。

我建议您看一下您的代码,尝试找出所提到的任何类别,如果找不到,也可以:

  • 添加日志记录条目,以使其更接近被卡住的位置。
  • 简化功能,直到排除不受欢迎的部分。