Comment puis-je transférer des paramètres d'un déclencheur planifié dans EventBridge à une tâche AWS Batch ?

Dernière mise à jour : 20-01-2022

Je souhaite transmettre les paramètres d'un déclencheur planifié dans Amazon EventBridge à une tâche AWS Batch.

Brève description

Dans AWS Batch, vos paramètres sont des espaces réservés pour les variables que vous définissez dans la section commande de votre définition de tâche AWS Batch. Ces espaces réservés vous permettent de :

  • utiliser la même définition de tâche pour plusieurs tâches qui utilisent le même format ;
  • modifier par programmation les valeurs dans la commande au moment de l'envoi.

Il est conseillé de définir votre paramètre en tant que paire clé-valeur. Par exemple :

"Parameters" : {"test" : "abc"}

Si vous enregistrez une définition de tâche ou soumettez une tâche, utilisez des espaces réservés de substitution de paramètres dans le champ Command (Commande) des propriétés de conteneur de la tâche. Par exemple :

"Command" : [ "echo” "Ref::test" ]

Lorsque vous soumettez la tâche précédente, l'argument Ref::test de la commande du conteneur est remplacé par la valeur par défaut (abc).

Vous pouvez définir une valeur de paramètre différente pour la même clé de paramètre lorsque vous soumettez une tâche. Par exemple :

"Parameters" : {"test" : "hello"}

Lorsque vous soumettez la tâche précédente, l'argument Ref::test de la commande du conteneur est remplacé par la valeur personnalisée (hello) que vous avez définie lors de l'envoi de la tâche.

Résolution

Configurer votre environnement AWS Batch

1.    Créez un environnement de calcul.

2.    Créez une file d'attente de tâches, puis associez-la à l'environnement de calcul que vous avez créé lors de l'étape 1.

3.    Créez une définition de tâche avec une image (par exemple : nginx).

Créer une règle EventsBridge

1.    Ouvrez la console EventBridge.

2.    Sélectionnez Create rule (Créer une règle).

3.    Saisissez un nom pour votre règle. Vous pouvez éventuellement saisir une description.

4.    In Define pattern (Définir le modèle), sélectionnez Event pattern (Modèle d’événement) ou Schedule (Planifier), en fonction de votre cas d’utilisation.

5.    Dans Select event bus (Sélectionner le bus d'événements), sélectionnez l'option par défaut AWS default event bus (Bus d'événements par défaut AWS).

6.    Dans Sélectionner les cibles (Select targets), choisissez Batch job queue (File d’attente de tâches par lots) dans la liste déroulante Target (Cible).

7.    Dans Job queue (File d'attente des tâches), saisissez l’ARN de la file d'attente des tâches que vous avez créée précédemment.

8.    Pour Définition de tâche, saisissez le nom de la définition de tâche que vous avez créée précédemment.

9.    Dans Nom de la tâche, saisissez un nom pour votre tâche.

10.    Développez la section Configurer l'entrée et sélectionnez Constant (texte JSON).

11.    Dans la zone de texte qui s'affiche, saisissez ce qui suit :

{"Parameters": {"name":"test"}, "ContainerOverrides": { "Command": ["echo","Ref::name"] } }

La règle envoie une tâche AWS Batch lorsque EventBridge appelle la règle. Si la tâche réussit, vos journaux CloudWatch impriment « test » aux emplacements suivants :

Log Group: /aws/batch/job
Log Stream: yourJobDefinitionName/default/your-ecs-task-ID

Important : vous devez utiliser la casse mixte pour le texte JSON dans vos règles EventBridge.

12.    Sélectionnez Create (Créer).