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

Lecture de 3 minute(s)
0

Je souhaite annuler toutes les tâches AWS Batch de ma file d'attente de tâches qui sont à l'état RUNNABLE. Comment puis-je procéder ?

Brève description

La console de gestion AWS vous permet d'annuler ou de résilier une seule tâche AWS Batch à partir d'une file d'attente de tâches à la fois. Pour annuler ou résilier plusieurs tâches AWS Batch de votre file d'attente de tâches, vous devez utiliser l'AWS Command Line Interface (AWS CLI).

Pour annuler toutes les tâches de votre file d'attente de tâches qui sont à l'état RUNNABLE, procédez comme suit.

Remarque : la procédure suivante peut être utilisée uniquement dans les environnements Linux ou macOS.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version AWS CLI la plus récente.

1.    Renvoie une liste de toutes les tâches de votre file d'attente de tâches qui sont dans l'état RUNNABLE en exécutant la commande list-jobs suivante :

Important : remplacez myJOBQueue par le nom de votre file d'attente de tâches.

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

Voici un exemple de sortie de commande list-jobs qui inclut trois tâches bloquées à l'état RUNNABLE :

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

2.    Pour annuler toutes les tâches AWS Batch de votre file d'attente de tâches bloquées dans l'état RUNNABLE, exécutez le script bash suivant :

Important : remplacez myJOBQueue par le nom de votre file d'attente de tâches.

Exemple de script bash pour l'annulation de tâches

#! /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

Remarque : pour résilier toutes les tâches de votre file d'attente de tâches, y compris toutes les tâches RUNNING, vous pouvez plutôt exécuter le script bash suivant :

Exemple de script bash de résiliation et d'annulation de toutes les tâches AWS Batch dans une file d'attente de tâches

#! /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

Important : l'exécution de ce script bash annule toutes les tâches de votre file d'attente qui n'ont pas atteint l'état STARTING.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois