Comment puis-je annuler toutes les tâches EXÉCUTABLES de ma file d'attente dans AWS Batch ?

Lecture de 3 minute(s)
0

Je souhaite annuler ou terminer toutes les tâches AWS Batch de ma file d'attente qui sont dans l'état EXÉCUTABLE.

Brève description

La console de gestion AWS vous permet d’annuler ou de mettre fin à une seule tâche AWS Batch à la fois à partir d'une file d'attente de tâches. Pour annuler ou mettre fin à plusieurs tâches AWS Batch de votre file d'attente, utilisez l’interface de la ligne de commande AWS (AWS CLI) ou les outils AWS pour PowerShell.

Pour annuler toutes les tâches de votre file d'attente de tâches qui sont dans l'état EXÉCUTABLE, utilisez l'API CancelJob ou l'API TerminateJob.

Résolution

Utilisez l'API CancelJob ou l'API TerminateJob pour annuler toutes les tâches dont l'état est le suivant :

  • SOUMIS
  • EN ATTENTE
  • EXÉCUTABLE
  • DÉMARRAGE

Toutefois, TerminateJob annule également toutes les tâches dont l'état est EN COURS D'EXÉCUTION. Utilisez l'API la mieux adaptée à votre cas d'utilisation. Pour plus d'informations, consultez TerminateJob et CancelJob.

Avant d'exécuter l'une de ces commandes, définissez la variable d'environnement $myJOBQueue sur le nom de votre file de tâches :

Linux

export myJOBQueue="job-queue-name"

PowerShell

$myJOBQueue="job-queue-name"

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l'interface ou des outils AWS pour PowerShell.

(Facultatif) Afficher toutes les tâches EXÉCUTABLE dans votre file d'attente

Pour renvoyer la liste de toutes les tâches de votre file d'attente de tâches qui sont dans l'état EXÉCUTABLE, exécutez la commande list-jobs suivante :

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

Pour PowerShell, utilisez la commande suivante :

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

L'exemple de sortie suivant inclut trois tâches dans l'état EXÉCUTABLE :

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

Annuler des tâches à l'aide de l'API CancelJob

Pour annuler toutes les tâches AWS Batch de votre file d'attente de tâches qui sont dans l'état EXÉCUTABLE, exécutez le script bash suivant :

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

Pour PowerShell, utilisez le script suivant :

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

Mettre fin à des tâches avec l'API TerminateJob

Pour terminer toutes les tâches de votre file d'attente, y compris toutes les tâches EN COURS D’EXÉCUTION, exécutez le script bash suivant :

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

Pour PowerShell, exécutez le script suivant :

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 OFFICIEL
AWS OFFICIELA mis à jour il y a un an