Comment utiliser AWS Batch comme cible pour ma règle CloudWatch Events ?

Date de la dernière mise à jour : 09/12/2019

Je souhaite utiliser AWS Batch comme cible pour ma règle Amazon CloudWatch Events.

Solution

L’exemple suivant montre comment configurer Amazon CloudWatch pour envoyer une tâche AWS Batch lorsqu’un nouveau compartiment Amazon Simple Storage Service (Amazon S3) est créé.

Créer une définition de tâche

1.    Ouvrez la console AWS Batch.

2.    Dans la barre de navigation, sélectionnez votre région AWS.

3.    Dans le volet de navigation, choisissez Job definitions (Définitions des tâches), puis choisissez Create (Créer).

4.    Pour Job definition name (Nom de la définition de tâche), entrez un nom unique pour votre définition de tâche.

Remarque : vous pouvez utiliser jusqu’à 128 lettres (majuscules et minuscules), chiffres, tirets et traits de soulignement dans votre nom unique.

5.    Pour Container image (Image de conteneur), entrez amazonlinux.

6.    Pour Command (Commande), entrez ce qui suit :

echo Ref::S3bucket

7.    Pour vCPU, entrez 2.

8.    Pour Memory (MiB) (Mémoire (Mio)), entrez 500.

9.    Sélectionnez Next (Suivant), puis choisissez Create (Créer).

Obtenez le nom ARN de la file d’attente de votre tâche et de votre définition de tâche

1.    Ouvrez la console AWS Batch.

2.    Dans le volet de navigation, sélectionnez Job queues (Files d’attente des tâches).

3.    Choisissez votre file d’attente des tâches.

4.    Dans la section Overview (Présentation), copiez le nom ARN de la file d’attente, puis enregistrez-le pour l’utiliser ultérieurement.

5.    Dans le volet de navigation, choisissez Job definitions (Définitions de tâche), puis choisissez la définition de tâche que vous avez créée précédemment.

6.    Dans la section Job definitions attributes (Attributs des définitions de tâche), copiez le nom ARN de la définition de tâche, puis enregistrez-le pour l’utiliser ultérieurement.

Créer la règle CloudWatch Events

1.    Ouvrez la console CloudWatch.

2.    Dans le volet de navigation, choisissez Rules (Règles).

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

4.    Dans la section Event Source (Source d’événement), choisissez Event Pattern (Modèle d’événement).

5.    Pour Service Name (Nom du service), choisissez Simple Storage Service (S3).

6.    Pour Event Type (Type d’événement), choisissez Bucket Level Operations (Opérations au niveau du compartiment).

Remarque : pour déclencher des tâches AWS Batch sur des opérations au niveau des objets Amazon S3 (par exemple, lorsqu’un nouvel objet est chargé dans un compartiment existant), consultez Comment puis-je activer la journalisation au niveau des objets pour un compartiment S3 avec des événements de données AWS CloudTrail ?

7.    ChoisissezAny operation (N’importe quelle opération).

8.    Dans la section Targets (Cibles), choisissez Add target (Ajouter une cible).

9.    Dans le menu principal, choisissez Batch job queue (File d’attente des tâches Batch).

10.    Pour Job queue (File d’attente des tâches), collez le nom ARN de la file d’attente des tâches que vous avez copié précédemment.

11.    Pour Job definition (Définition de tâche), collez dans le nom ARN de définition de tâche que vous avez copié précédemment.

12.    Pour Job name (Nom de la tâche), saisissez le nom de la tâche AWS Batch.

13.    Dans la section Configure input (Configurer l’entrée), choisissez Input Transformer (Transformateur d’entrée).

14.    Dans la première zone de saisie, saisissez les valeurs de compartiment S3 à envoyer lorsque l’événement est déclenché :

{"S3BucketNameValue":"$.detail.requestParameters.bucketName"}

Remarque : remplacez S3BucketNameValue par votre propre valeur.

15.    Dans la deuxième zone de saisie, saisissez la structure de Parameters (Paramètres) qui doit être envoyée à la tâche Batch :

{"Parameters" : {"S3bucket": S3BucketNameValue}}

Remarque : remplacez S3BucketNameValue par votre propre valeur. Remplacez S3bucket par le nom du paramètre que vous souhaitez définir dans votre tâche AWS Batch.

16.    Choisissez Create a new role for this specific resource (Créer un rôle pour cette ressource spécifique) ou Use existing role (Utiliser un rôle existant).

Remarque : si vous choisissez un rôle existant, ce rôle doit avoir une stratégie AWS Identity and Access Management (IAM) qui autorise l’action batch:SubmitJob .

17.    Choisissez Configure details (Configurer les détails).

18.    Pour Name (Nom), saisissez le nom de la règle.

19.    Pour State (État), cochez la case Enabled (Activé).

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

Tester la règle que vous avez créée

1.    Ouvrez la console Amazon S3.

2.    Choisissez Create Bucket (Créer un compartiment).

3.    Dans le champ Bucket name (Nom du compartiment), tapez un nom unique conforme DNS pour votre nouveau compartiment.

4.    Pour Region (Région), choisissez la même région que celle où vous avez créé la règle CloudWatch Events.

5.    Choisissez Create (Créer).

Vérifier vos journaux

1.    Ouvrez la console AWS Batch.

2.    Dans le volet de navigation, choisissez Jobs (Tâches).

3.    Choisissez votre tâche avec le statut SUCCEEDED (SUCCÈS).

4.    Sur la page Job details (Détails de la tâche), dans la section Attempts (Tentatives), choisissez View logs (Afficher les journaux). Le journal affiche le nom de votre compartiment dans la console CloudWatch.