如何从 AWS Batch 中的我的作业队列终止所有 RUNNABLE 作业?

上次更新时间:2020 年 5 月 28 日

我想同时取消或终止我的作业队列中的所有 AWS Batch 作业。

简短描述

在 AWS 管理控制台上,您无法一次取消或终止作业队列中的多个作业。

注意:下面的解决方法适用于 Linux 或 macOS 环境。

解决方法

重要提示:完成下面的步骤之前,您需要先安装 AWS 命令行界面 (AWS CLI)

1.    在 AWS CLI 中,列出您的作业队列中状态为 RUNNABLE 的作业:

$aws batch list-jobs --job-queue myJOBQueue --job-status runnable --output text --query jobSummaryList[*].[jobId]

注意:myJOBQueue 替换为您的作业队列。

如果您有三个作业停留在 RUNNABLE 状态,则命令输出将与下面的内容相似:

----------------------------------------------------------------------------------------
"0cffddb0-8bfa-4ba4-86ba-c5cad59e4529"
"884d8bdf-6192-4d4c-ac85-c51093460a01"
"236670e3-127a-4fe1-afd6-3f21cf1fe02e"
----------------------------------------------------------------------------------------

2.    创建 Bash 脚本以取消或终止您的作业。请参阅以下示例。

用于取消作业的脚本:

#! /bin/bash
for i in $(aws batch list-jobs --job-queue myJOBQueue --job-status runnable --output text --query jobSummaryList[*].[jobId])
do
  echo "Cancel Job: $i"
  aws batch cancel-job --job-id $i --reason "Cancelling job."
  echo "Job $i canceled"
done

用于终止 作业的脚本:

#! /bin/bash
for i in $(aws batch list-jobs --job-queue myJOBQueue --job-status runnable --output text --query jobSummaryList[*].[jobId])
do
  echo "Deleting Job: $i"
  aws batch terminate-job --job-id $i --reason "Terminating job."
  echo "Job $i deleted"
done

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?