Didacticiel : Journalisation des opérations au niveau de l'objet Amazon S3 à l'aide d'EventBridge - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Didacticiel : Journalisation des opérations au niveau de l'objet Amazon S3 à l'aide d'EventBridge

Vous pouvez journaliser les opérations d'API au niveau de l'objet dans vos compartiments Amazon S3. Pour permettre à Amazon EventBridge de mettre en correspondance ces événements, vous devez d'abord utiliser AWS CloudTrail pour créer et configurer un journal de suivi destiné à recevoir ces événements.

Dans ce didacticiel, vous allez créer successivement un journal de suivi CloudTrail, une fonction AWS Lambda, puis une règle dans la console EventBridge qui invoquera cette fonction en réponse à un événement de données S3.

Étape 1 : Configuration de votre journal de suivi AWS CloudTrail

Pour journaliser les événements de données d'un compartiment S3 dans AWS CloudTrail et EventBridge, commencez par créer un journal de suivi. Un journal de suivi capture les appels d'API et les événements associés de votre compte et transmet les fichiers journaux au compartiment S3 que vous spécifiez. Vous pouvez mettre à jour un journal de suivi existant ou en créer une nouveau.

Pour plus d'informations, consultez Événements de données dans le Guide de l'utilisateur AWS CloudTrail.

Pour créer un journal d'activité
  1. Ouvrez la console CloudTrail à l’adresse https://console.aws.amazon.com/cloudtrail/.

  2. Choisissez Trails (Suivis), Create trail (Créer un suivi).

  3. Dans Trail name, tapez un nom pour le journal.

  4. Pour Emplacement de stockage, choisissez Créer un compartiment S3.

  5. Dans Alias AWS KMS, entrez un alias pour la clé KMS.

  6. Choisissez Next (Suivant).

  7. Pour Type d'événement, choisissez Événements de données

  8. Pour Événements de données, effectuez l'une des opérations suivantes :

    • Pour enregistrer des événements de données pour tous les objets Amazon S3 d'un compartiment, précisez un compartiment S3 et un préfixe vide. Lorsqu'un événement se produit sur un objet de ce compartiment , celui-ci est traité et enregistré par le suivi.

    • Pour journaliser les événements de données relatifs à certains objets Amazon S3, spécifiez un compartiment S3 et le préfixe d'objet. Lorsqu'un événement se produit sur un objet de ce compartiment et que l'objet commence par le préfixe spécifié, le suivi traite et consigne l'événement.

  9. Pour chaque ressource, optez pour une journalisation des événements en Lecture, en Écriture ou les deux.

  10. Choisissez Next (Suivant).

  11. Choisissez Create trail (Créer un journal de suivi).

Étape 2 : Créer une fonction AWS Lambda

Créez une fonction Lambda pour enregistrer les événements de données de vos compartiments S3.

Pour créer une fonction Lambda
  1. Ouvrez la console AWS Lambda à l'adresse https://console.aws.amazon.com/lambda/.

  2. Sélectionnez Create function (Créer une fonction).

  3. Choisissez Créer à partir de zéro.

  4. Saisissez un nom et une description pour la fonction Lambda. Par exemple, nommez la fonction LogS3DataEvents.

  5. Gardez les autres options comme valeurs par défaut et choisissez Créer une fonction.

  6. Dans l'onglet Code de la page de fonction, double-cliquez sur index.js.

  7. Remplacez le code existant par le code suivant.

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
  8. Choisissez Deploy (Déployer).

Étape 3 : Création d'une règle

Créez une règle pour exécuter la fonction Lambda que vous avez créée à l'étape 2. Cette règle s'exécutera en réponse à un événement de données Amazon S3.

Pour créer une règle
  1. Ouvrez la console Amazon EventBridge à l'adresse https://console.aws.amazon.com/events/.

  2. Dans le volet de navigation, choisissez Rules.

  3. Choisissez Create rule.

  4. Saisissez un nom et une description pour la règle. Par exemple, nommez la règle TestRule

  5. Pour Event bus (Bus d'événement), sélectionnez le bus d'événement que vous souhaitez associer à cette règle. Si vous souhaitez que cette règle mette en correspondance les événements en provenance de votre compte, sélectionnez Par défaut. Lorsqu'un service AWS de votre compte émet un événement, il accède toujours au bus d'événement par défaut de votre compte.

  6. Pour Rule type (Type de règle), choisissez Rule with an event pattern (Règle avec un modèle d'événement).

  7. Choisissez Next (Suivant).

  8. Pour Event source (Origine de l'événement), choisissez AWSservices (Services ).

  9. Pour Event pattern (Modèle d'événement), procédez comme suit :

    1. Sous Source d'événement, sélectionnez Simple Storage Service (S3) dans la liste déroulante.

    2. Pour Type d'événement, sélectionnez Appel d'API au niveau de l'objet via CloudTrail dans la liste déroulante.

    3. Choisissez Specific operation(s) (Opération(s) spécifique(s)), puis PutObject.

    4. Par défaut, la règle correspond aux événements de données pour tous les compartiments de la région. Pour faire correspondre des événements de données pour des compartiments spécifiques, choisissez Specify bucket(s) by name (Spécifier les compartiments par nom), puis précisez un ou plusieurs compartiments.

  10. Choisissez Next (Suivant).

  11. Pour Types de cibles, choisissez service AWS.

  12. Pour Sélectionner une cible, choisissez Fonction Lambda dans la liste déroulante.

  13. Pour Fonction, sélectionnez la fonction Lambda LogS3DataEvents que vous avez créée à l'étape 1.

  14. Choisissez Next (Suivant).

  15. Choisissez Next (Suivant).

  16. Consultez les détails de la règle et choisissez Create rule (Créer une règle).

Étape 4 : Test de la règle

Pour tester la règle, placez un objet dans votre compartiment S3. Vous pouvez vérifier que votre fonction Lambda a été appelée.

Pour afficher les journaux de votre fonction Lambda
  1. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation, sélectionnez Logs (Journaux).

  3. Sélectionnez le nom du groupe de journaux pour votre fonction Lambda (/aws/lambda/function-name).

  4. Sélectionnez le nom du flux de journaux pour afficher les données fournies par la fonction concernant l'instance que vous avez lancée.

Vous pouvez également examiner vos journaux CloudTrail dans le compartiment S3 que vous avez spécifié pour votre journal de suivi. Pour plus d'informations, consultez Obtention et consultation des fichiers journaux CloudTrail dans le AWS CloudTrail Guide de l'utilisateur.

Étape 5 : Confirmer la bonne exécution

Si l'événement Lambda se trouve dans les journaux CloudWatch, cela signifie que vous avez correctement effectué ce didacticiel. Si l'événement ne figure pas dans vos journaux CloudWatch, essayez de résoudre le problème en vérifiant d'abord que la règle a bien été créée. Si celle-ci semble correcte, vérifiez que le code de votre fonction Lambda l'est également.

Étape 6 : Nettoyer vos ressources

Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. La suppression des ressources AWS que vous n'utilisez plus vous évite des frais inutiles sur votre compte AWS.

Pour supprimer la ou les règles EventBridge
  1. Ouvrez la page Règles de la console EventBridge.

  2. Sélectionnez la ou les règles que vous avez créées.

  3. Choisissez Supprimer.

  4. Choisissez Supprimer.

Pour supprimer la ou les fonctions Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la ou les fonctions que vous avez créées.

  3. Sélectionnez Actions, Delete (Supprimer).

  4. Choisissez Supprimer.

Pour supprimer le ou les journaux de suivi CloudTrail
  1. Ouvrez la page Trails (Journaux de suivi) de la console CloudTrail.

  2. Sélectionnez le ou les journaux de suivi que vous avez créés.

  3. Choisissez Supprimer.

  4. Sélectionnez Delete.