AWS Batch のジョブキューからすべての RUNNABLE ジョブをキャンセルする方法を教えてください。

所要時間2分
0

ジョブキュー内の RUNNABLE 状態にある AWS Batch ジョブをすべてキャンセルまたは終了したい。

簡単な説明

AWS マネジメントコンソールでは、ジョブキューから一度に 1 つの AWS Batch ジョブをキャンセルまたは終了できます。キューから複数の AWS Batch ジョブをキャンセルまたは終了するには、AWS コマンドラインインターフェイス (AWS CLI) または AWS Tools for PowerShell を使用します。

ジョブキュー内の RUNNABLE 状態にあるジョブをすべてキャンセルするには、CancelJob API または TerminateJob API のいずれかを使用します。

解決策

CancelJob API または TerminateJob API を使用して、以下の状態にあるすべてのジョブをキャンセルします。

  • SUBMITTED
  • PENDING
  • RUNNABLE
  • STARTING

ただし、TerminateJob は、RUNNING 状態にあるすべてのジョブもキャンセルします。状況に最も適した API を使用してください。詳細については、「TerminateJob」「CancelJob」を参照してください。

これらのコマンドのいずれかを実行する前に、$myJOBQueue 環境変数をジョブキューの名前に設定します。

Linux

export myJOBQueue="job-queue-name"

PowerShell

$myJOBQueue="job-queue-name"

**注:**AWS CLI コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI または AWS Tools for PowerShell を使用していることを確認してください。

(オプション) キュー内のすべての RUNNABLE ジョブを表示する

ジョブキュー内の RUNNABLE 状態のすべてのジョブのリストを返すには、次のように list-jobs コマンドを実行します。

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

PowerShell の場合は、次のコマンドを使用します。

Get-BATJobList -JobQueue $myJOBQueue  -JobStatus RUNNABLE | select -ExpandProperty jobid

次の出力例には、RUNNABLE 状態の 3 つのジョブが含まれています。

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

CancelJob API を使用してジョブをキャンセルする

ジョブキュー内の RUNNABLE 状態の AWS Batch ジョブをすべてキャンセルするには、次のように 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

PowerShell の場合は、次のスクリプトを使用します。

Foreach ($I in Get-BATJobList -JobQueue $myJOBQueue -JobStatus RUNNABLE | select -ExpandProperty jobid) {
    echo "Cancel job $I"
    Stop-BATJob -JobId $I -Reason "Cancelling job."
}

TerminateJob API を使用してジョブを終了する

すべての RUNNING ジョブを含め、ジョブキュー内のすべてのジョブを終了するには、次のように 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 "Stopping job $job in state $state"
        aws batch terminate-job --reason "Terminating job." --job-id $job
    done
done

PowerShell の場合は、次のスクリプトを実行します。

Foreach ($STATE in "SUBMITTED","PENDING","RUNNABLE","STARTING","RUNNING") {
    Foreach ($I in Get-BATJobList -JobQueue $myJOBQueue -JobStatus $STATE | select -ExpandProperty jobid) {
        echo "Stopping job $I in state $STATE"
        Remove-BATJob -JobId $I -Reason "Terminating job." -Force
    }
}
AWS公式
AWS公式更新しました 1年前
1コメント

注: 次の手順は Linux または macOS 環境でのみ使用できます。 こちら、Windowsが対象外なのはなぜでしょうか?

応答済み 1年前