Passer au contenu

Comment créer et résoudre un problème lié à une règle EventBridge qui se déclenche lorsque des modifications sont apportées aux objets ou aux opérations S3 ?

Lecture de 5 minute(s)
0

Je souhaite créer un flux de travail Amazon EventBridge qui se déclenche lorsque des modifications sont apportées aux compartiments ou aux objets Amazon Simple Storage Service (Amazon S3).

Résolution

Pour utiliser EventBridge afin de capturer des événements Amazon S3, vous pouvez utiliser AWS CloudTrail ou capturer des événements directement depuis Amazon S3.

Chaque option comprend son propre ensemble de métadonnées. Les événements proposés par CloudTrail incluent des informations sur l'API AWS, Gestion des identités et des accès AWS (AWS IAM) et userAgent. Les événements envoyés depuis Amazon S3 incluent les détails de l'objet, par exemple sa taille.

Capturer des événements S3 via CloudTrail

Vous pouvez utiliser CloudTrail pour surveiller et capturer les modifications apportées aux compartiments S3, telles que la création, la modification ou la suppression. CloudTrail transmet automatiquement ces événements à EventBridge.

Pour capturer les événements S3 via CloudTrail, procédez comme suit :

  1. Créez un journal d’activité CloudTrail pour journaliser les événements dans les compartiments S3 concernés.
  2. Créez une ressource pour traiter les événements S3.
    Remarque : La ressource que vous créez peut être n'importe quelle cible EventBridge prise en charge. Par exemple, AWS Lambda, une tâche Amazon Elastic Container Service (Amazon ECS), une destination d'API ou un flux de diffusion Amazon Kinesis Data Firehose.
  3. Créez une règle EventBridge avec un modèle d'événement correspondant aux événements S3. L'exemple suivant montre un modèle d'événement qui correspond aux appels d'API PutObject, DeleteObject et DeleteObjects effectués sur un compartiment S3 spécifique :
    {  "source": [
        "aws.s3"
      ],
      "detail-type": [
        "AWS API Call via CloudTrail"
      ],
      "detail": {
        "eventName": [
          "PutObject",
          "DeleteObject",
          "DeleteObjects"
        ],
        "requestParameters": {
          "bucketName": [
            "123456789012-prod-app"
          ],
          "key": [
            {
              "prefix": "feature1/"
            },
            {
              "prefix": "feature2/"
            }
          ]
        }
      }
    }
    Remarque : Les clés commencent par feature1/ et feature2/.
  4. Associez la ressource que vous avez créée à la règle EventBridge en tant que cible.

Pour plus d'informations sur la procédure de capture des événements de données, consultez le didacticiel : Journaliser les opérations au niveau des objets d'Amazon S3 à l'aide d'EventBridge.

Utiliser Amazon S3 pour capturer des événements S3

Cette option ne requiert pas CloudTrail. Le compartiment S3 est configuré pour envoyer toutes les opérations sur cette ressource au service EventBridge.

Activer les événements S3 sur EventBridge

  1. Ouvrez la console Amazon S3.
  2. Dans la liste Compartiments, choisissez le nom du compartiment pour lequel vous souhaitez activer des événements.
    Remarque : Pour plus d'informations, consultez la section Activation d'Amazon EventBridge.
  3. Sélectionnez Propriétés.
  4. Accédez à la section Notifications d'événements, puis recherchez Amazon EventBridge. Sélectionnez Modifier.
  5. Dans Envoyer des notifications à Amazon EventBridge pour tous les événements de ce compartiment, sélectionnez Activé.

Créer une ressource pour traiter les événements S3

La ressource que vous créez peut être n'importe quelle cible EventBridge prise en charge.

Créer une règle EventBridge avec un modèle d'événement correspondant aux événements S3

Créez une règle EventBridge avec un modèle d'événement correspondant aux événements S3. Voici un exemple de modèle d'événement qui se déclenche lorsqu'un objet est créé ou supprimé dans un compartiment S3 spécifique :

{  "source": [
    "aws.s3"
  ],
  "detail-type": [
    "Object Created",
    "Object Deleted"
  ],
  "detail": {
    "bucket": {
      "name": [
        "123456789012-prod-app"
      ]
    },
    "object": {
      "size": [
        {
          "numeric": [
            ">=",
            15728640
          ]
        }
      ],
      "key": [
        {
          "suffix": ".zip"
        }
      ]
    }
  }
}

Remarque : Le modèle est un filtre basé sur des paramètres de nom de fichier tels qu'une taille supérieure à 15 Mo et avec l’extension zip.

Associer la ressource à la règle

Associez la ressource à la règle que vous avez créée avec la règle EventBridge comme cible.

Corriger les erreurs

Assurez-vous que les traces CloudTrail ou les notifications d'événements S3 nécessaires sont correctement configurées.

Utilisez les métriques EventBridge TriggeredRules et Invocations pour confirmer les correspondances avec la règle et les invocations cibles réussies.

Les points de données TriggeredRules indiquent que la règle correspond à l'événement entrant. S'il n'existe aucun point de données, réévaluez le modèle d'événement.

La métrique FailedInvocations indique qu'il existe un problème avec la façon dont EventBridge transmet les événements à la cible. Cela peut être lié à des autorisations IAM ou de politiques de ressources, ou à des configurations cibles.

Étant donné que le modèle d'événement est sensible à la casse, « FAILED » et « failed » sont traités différemment. L'outil EventBridge Sandbox propose des exemples d'événements organisés par les services AWS et les partenaires EventBridge. L'outil valide les événements entrants par rapport au modèle d'événement.

Pour qu'un événement puisse être identifié, tous les champs du modèle d'événement doivent lui correspondre. Pour résoudre les problèmes liés au modèle d'événement, supprimez des champs pour créer un modèle d'événement plus générique. Pour plus d’informations, consultez la section Comment puis-je résoudre les problèmes liés aux règles EventBridge ?

Les règles EventBridge peuvent comporter jusqu'à cinq cibles. Pour résoudre les problèmes, attachez temporairement un groupe Amazon CloudWatch Logs ou une rubrique Amazon Simple Notification Service (Amazon SNS). Le groupe de journaux et les notifications capturent l'événement transmis à la cible et permettent d'isoler les erreurs de configuration.

Informations connexes

Comment créer une règle EventBridge pour automatiser les réponses aux appels d'API CloudTrail ?

Utiliser les notifications d'événements Amazon S3 avec Amazon EventBridge

Utilisation de la gestion dynamique des événements Amazon S3 avec Amazon EventBridge

AWS OFFICIELA mis à jour il y a un an