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
}
}