Passer au contenu

Comment résoudre les problèmes liés aux règles EventBridge ?

Lecture de 6 minute(s)
0

Je souhaite résoudre ma règle Amazon EventBridge qui ne déclenche pas la cible.

Brève description

Pour résoudre votre règle EventBridge qui ne déclenche pas la cible, procédez comme suit :

  1. Vérifiez que l'événement pertinent s’est produit.
  2. Vérifiez que l'événement correspond au modèle d'événement de la règle.
  3. Vérifiez que la cible a correctement traité l'événement.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Vérifier que l'événement pertinent s'est produit

Effectuez les opérations suivantes :

  • Si AWS CloudTrail a capturé l'événement, analysez les journaux CloudTrail. Vérifiez que l'appel API a eu lieu à l'heure prévue et qu'il correspond à tous les champs du modèle d'événement.
    Remarque : Certains services AWS sont uniquement disponibles dans la région us-east-1. Par exemple, les appels d'API Gestion des identités et des accès AWS (AWS IAM) sont uniquement publiés dans la région us-east-1. Si vous avez créé une règle dans une autre région, ces événements ne sont pas transmis à EventBridge et la règle n'est pas déclenchée.
  • La console EventBridge fournit l'outil d’environnement de test (sandbox) qui contient des exemples d'événements AWS et partenaires. Utilisez cet outil pour comparer le modèle d'événement à des événements de type AWS, partenaires et personnalisés. Vous pouvez également utiliser l'API TestEventPattern pour confirmer la correspondance entre le modèle d'événement et l'événement.
  • EventBridge fournit des métriques TriggeredRules pour signaler une règle liée à des événements correspondants. Utilisez les horodatages de la métrique TriggeredRules pour vérifier quand l'événement s'est produit.

Examiner les métriques CloudWatch

Pour consulter les métriques Amazon CloudWatch relatives à une règle EventBridge, procédez comme suit :

  1. Ouvrez la console CloudWatch.
  2. Sélectionnez Toutes les métriques.
  3. Sélectionnez l'espace de noms AWS/Événements.
  4. Sélectionnez les métriques TriggeredRules, Invocations et FailedInvocations pour la règle.
    Remarque : Vous pouvez consulter ces métriques à l'aide de la statistique SUM.

Vérifier que l'événement correspond au modèle d'événement de la règle

Pour qu'un événement puisse être identifié, tous les champs du modèle d'événement doivent lui correspondre. Utilisez l'environnement de test (sandbox) pour comparer l'événement à un modèle d'événement comportant quelques champs. Utilisez un modèle d'événement simple comme le suivant :

{    "source": ["aws.s3"]
}

Si vous obtenez des correspondances réussies, augmentez la complexité du modèle d'événement. Chaque champ ajouté au modèle d'événement filtre les événements auxquels il correspond et restreint son champ d'action. Pour obtenir le modèle exact, les utilisateurs peuvent attacher temporairement une cible de groupe CloudWatch Logs ou une rubrique Amazon Simple Notification Service (Amazon SNS). Cette action permet de capturer les événements transmis aux cibles ou d’isoler les erreurs de configuration de la cible. Cela confirme également que l'événement a été transmis à la cible et que le transformeur d'entrée a été correctement configuré.

En fonction de l'événement envoyé à la cible, réécrivez le modèle pour répondre aux besoins de l'utilisateur. Voici un exemple de modèle d'événement :

{  "source": [
    "aws.s3"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventName": [
      "PutObject",
      "DeleteObject",
      "DeleteObjects"
    ],
    "requestParameters": {
      "bucketName": [
        "123456789012-prod-app1"
      ],
      "key": [
        {
          "prefix": "feature1/"
        },
        {
          "prefix": "feature2/"
        }
      ]
    }
  }
}

Remarque : Le modèle correspond à une liste d'appels d'API Amazon Simple Storage Service (Amazon S3) relatifs à un compartiment spécifique pour un objet commençant par feature1 ou feature2.

Vous pouvez ajouter progressivement des champs pour isoler les champs qui ne correspondent pas aux événements.

Vérifier que la cible a correctement traité l'événement

La métrique Invocations publie un point de données lorsqu'une règle transmet un événement à une cible qui indique des invocations qui ont réussi et échoué. EventBridge émet un point de données FailedInvocations lors d’un échec définitif d’invocation de la cible. Ce point de données indique des problèmes liés à la configuration cible ou à des problèmes liés à des autorisations inadéquates.

EventBridge doit disposer des autorisations requises pour invoquer une cible. Le rôle IAM ou une politique de ressources peut accorder des autorisations à une cible. Lorsque vous utilisez EventBridge pour créer des règles, la console ajoute automatiquement les autorisations requises aux ressources associées.

Remarque : Configurez les autorisations si vous utilisez le kit SDK AWS, l'interface de la ligne de commande AWS (AWS CLI) ou AWS CloudFormation pour déployer la règle.

S'il n'existe aucun point de données FailedInvocations, cela signifie qu’EventBridge a bien transmis l'événement à la cible. Cependant, il se peut que la cible ne fonctionne pas correctement. Par exemple, une cible AWS Lambda peut rencontrer des erreurs lors de son exécution ou de sa limitation. Pour plus d'informations, consultez les métriques CloudWatch de la cible, ainsi que tous les journaux pertinents.

Pour identifier la cause de FailedInvocations, associez une file d'attente de lettres mortes (DLQ) Amazon Simple Queue Service (Amazon SQS) à la cible.

Pour configurer une DLQ sur la cible, procédez comme suit :

  1. Créez une file d'attente SQS.
  2. Sélectionnez la règle d'événement, puis choisissez Modifier.
  3. Choisissez l’onglet Cibles, puis Modifier.
  4. Développez l'onglet Paramètres supplémentaires de la cible pour laquelle vous souhaitez configurer la politique de nouvelle tentative.
  5. Dans la section File d'attente de lettres mortes, sélectionnez une option selon que votre DLQ SQS se trouve dans le même compte ou dans un compte différent.
  6. Choisissez Sélectionnez une file d'attente Amazon SQS dans le compte AWS actuel à utiliser comme file d'attente de lettres mortes, puis sélectionnez le nom de la file d'attente SQS.
  7. Sélectionnez Mettre à jour.

Si des invocations échouent pour la règle, le DLQ journalise le message d'erreur. Pour examiner l’erreur, procédez comme suit :

  1. Dans la file d'attente SQS, choisissez Envoyer et recevoir des messages.
  2. Choisissez Rechercher des messages.
  3. Sélectionnez un message d'erreur, puis accédez à la section Attributs.

Voici un exemple de message provenant d'une DLQ qui indique qu'EventBridge ne dispose pas des autorisations requises pour invoquer la cible Lambda :

"MessageAttributes": {                "ERROR_CODE": {
                    "StringValue": "NO_PERMISSIONS",
                    "DataType": "String"
                },
                "ERROR_MESSAGE": {
                    "StringValue": "User: events.amazonaws.com is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-1:123456789012:function:Hello_World because no resource-based policy allows the lambda:InvokeFunction action (Service: AWSLambdaInternal; Status Code: 403;
Error Code: AccessDeniedException; Request ID: 6635c4c4-9c54-416e-bc40-ef25bad0aca5; Proxy: null)",
                    "DataType": "String"
                },

Informations connexes

Résolution de problèmes liés à Amazon EventBridge

Pourquoi ma fonction Lambda n'a-t-elle pas été déclenchée par ma règle EventBridge ?

Comment résoudre les erreurs dans EventBridge Scheduler ?

Utiliser des files d'attente de lettres mortes pour traiter les événements non diffusés dans EventBridge

AWS OFFICIELA mis à jour il y a 9 mois