如何在 AWS Batch 中从我的任务队列取消所有 RUNNABLE 任务?

上次更新日期:2021 年 7 月 21 日

我想取消任务队列中处于 RUNNABLE 状态的所有 AWS Batch 任务。该如何操作?

简短描述

AWS 管理控制台允许您一次仅取消终止任务队列中的一个 AWS Batch 任务。要从任务队列中取消或终止多个 AWS Batch 任务,您必须使用 AWS Command Line Interface (AWS CLI)

要取消任务队列中处于 RUNNABLE 状态的所有任务,请按以下步骤操作。

注意:以下过程只能在 Linux 或 macOS 环境中使用。

解决方法

注意:如果您在运行 AWS CLI 命令时遇到错误,请确保您运行的是最新版本的 AWS CLI

1.    通过运行以下 list-jobs 命令,返回任务队列中处于 RUNNABLE 状态的所有任务的列表:

重要提示:myJOBQueue 替换为您的任务队列名称。

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

以下是 list-jobs 命令输出的示例,该命令输出包括三个卡在 RUNNABLE 状态的任务:

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

2.    要取消任务队列中处于 RUNNABLE 状态的所有 AWS Batch 任务,请运行以下 bash 脚本:

重要提示:myJOBQueue 替换为您的任务队列名称。

取消任务示例 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

注意:终止任务队列中的所有任务,包括所有 RUNNING 状态的任务,您可以运行以下 bash 脚本:

终止和取消任务队列中所有 AWS Batch 任务的 bash 脚本示例

#! /bin/bash
for state in SUBMITTED PENDING RUNNABLE STARTING RUNNING
do 
    for job in $(aws batch list-jobs --job-queue myJOBQueue --job-status $state --output text --query jobSummaryList[*].[jobId])
    do 
        echo -ne "Stopping job $job in state $state\t"
        aws batch terminate-job --reason "Terminating job." --job-id $job && echo "Done." || echo "Failed."
    done
done

重要提示:运行此 bash 脚本将取消队列中尚未进入 STARTING 状态的所有任务。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?