AWS Batch의 작업 대기열에서 실행 가능한 모든 작업을 취소하려면 어떻게 해야 하나요?

3분 분량
0

작업 대기열에서 실행 가능한 상태인 모든 AWS Batch 작업을 취소하거나 종료하고 싶습니다.

간략한 설명

AWS Management 콘솔을 사용하면 작업 대기열에서 한 번에 하나의 AWS Batch 작업만 취소하거나 종료할 수 있습니다. 대기열에서 여러 AWS Batch 작업을 취소하거나 종료하려면 AWS Command Line Interface(AWS CLI) 또는 AWS Tools for PowerShell을 사용하세요.

작업 대기열에서 실행 가능 상태인 모든 작업을 취소하려면 CancelJob API 또는 TerminateJob API를 사용하세요.

해결 방법

CancelJob API 또는 TerminateJob API를 사용하여 다음 상태의 모든 작업을 취소할 수 있습니다.

  • 제출됨
  • 보류 중
  • 실행 가능
  • 시작 중

하지만 TerminateJob실행 중 상태인 모든 작업도 취소합니다. 사용 사례에 가장 적합한 API를 사용하세요. 자세한 내용은 TerminateJobCancelJob를 참조하세요.

이러한 명령 중 하나를 실행하기 전에 $myJOBQueue 환경 변수를 작업 큐 이름으로 설정하세요.

Linux

export myJOBQueue="job-queue-name"

PowerShell

$myJOBQueue="job-queue-name"

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 AWS CLI 버전 또는 AWS Tools for PowerShell을 사용하고 있는지 확인하세요.

(선택 사항) 대기열에 있는 실행 가능한 모든 작업 보기

작업 큐에서 실행 가능한 상태인 모든 작업의 목록을 반환하려면 다음 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

다음 예제 출력에는 실행 가능한 상태의 작업 세 개가 포함되어 있습니다.

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

CancelJob API를 사용하여 작업 취소

작업 대기열에서 실행 가능한 상태인 모든 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를 사용하여 작업을 종료합니다.

실행 중인 모든 작업을 포함하여 작업 큐에서 모든 작업을 종료하려면 다음 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 공식업데이트됨 10달 전