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

Lecture de 6 minute(s)
0

Je souhaite savoir pourquoi ma règle Amazon EventBridge n'a pas déclenché ou invoqué la cible comme prévu.

Brève description

Utilisez ce flux de travail de validation pour identifier le problème :

  1. Vérifiez que l'événement pertinent s'est produit (par exemple, un appel d'API AWS CloudTrail ou le téléchargement d'un objet Simple Storage Service (Amazon S3)).
  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 (par exemple, l'événement a invoqué une fonction AWS Lambda).

Résolution

Suivez ces étapes pour résoudre les problèmes liés aux règles Amazon EventBridge :

Validation d’un événement entrant

Vous pouvez utiliser l’une de ces méthodes (ou plusieurs) pour valider l'événement entrant :

  • Si AWS CloudTrail a capturé l'événement, vous pouvez analyser les journaux CloudTrail. Vérifiez que l'appel API a eu lieu à l'heure prévue et qu'il correspond bien à tous les champs du modèle d'événements.
    Remarque : certains services AWS sont uniquement disponibles dans la région us-east-1. Par exemple, les appels d'API (IAM) sont uniquement publiés dans la région us-east-1. Si une règle correspondant aux événements IAM a été créée dans une autre région, ces événements ne sont alors pas transmis à EventBridge. Par conséquent, la règle ne sera pas déclenchée par ces événements.
  • La console Amazon EventBridge fournit un outil d’environnement de test (sandbox) pour EventBridge qui contient des exemples d'événements provenant d’AWS et de ses partenaires. Utilisez cet outil pour comparer le modèle d'événement proposé à 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. L’horodatage des points de données TriggeredRules indiquent quand l'événement s'est produit.

Examen des métriques CloudWatch

Suivez ces étapes pour examiner les métriques CloudWatch liées à une règle Amazon EventBridge :

  1. Ouvrez la console CloudWatch.
  2. Sélectionnez Toutes les métriques.
  3. Sélectionnez l'espace de noms AWS/Events.
  4. Sélectionnez les métriques TriggerRules, Invocations et FailedInvocations (si elles sont disponibles) de la règle en question. Vous pouvez consulter ces métriques à l'aide de la statistique SUM.

Validation du 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. Utilisez l'environnement de test (sandbox) pour comparer l'événement de votre choix à un modèle d'événement comportant quelques champs. Par exemple, utilisez un modèle d'événement simple tel que celui-ci :

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

Augmentez la complexité du modèle d'événement si vous obtenez des correspondances réussies. Chaque champ ajouté au modèle d'événement filtre les événements auxquels il correspond et restreint son champ d'action.

Vous trouverez ci-dessous un exemple de modèle d'événement. Ce modèle associe une liste d'appels d'API Amazon S3 à un compartiment spécifique pour un objet qui commence par l'une des deux chaînes suivantes : feature1 et feature2.

{
  "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/"
        }
      ]
    }
  }
}

Ajoutez progressivement des champs pour isoler les champs qui ne correspondent pas aux événements souhaités.

Validation de la cible

  • La métrique Invocations publie un point de données lorsqu'une règle transmet un événement à une cible. Elle indique ainsi les invocations qui ont réussi ou échoué.

  • Amazon EventBridge émet un point de données FailedInvocations lors d’un échec définitif d’invocation de cible. Le point de données FailedInvocations indique des problèmes liés à la configuration cible ou à des autorisations inadéquates.

  • Amazon EventBridge doit disposer des autorisations appropriées pour pouvoir invoquer la cible. En fonction des cibles, les autorisations sont octroyées par le rôle AWS Identity and Access Management (IAM) ou par une politique de ressources.

  • Lorsque vous créez des règles à l'aide de la console Amazon EventBridge, celle-ci ajoute automatiquement les autorisations nécessaires aux ressources associées.
    Remarque : vous devez configurer explicitement les autorisations si vous déployez la règle à l'aide du SDK AWS, de l'interface de la ligne de commande AWS (AWS CLI) ou d'AWS CloudFormation.

  • S'il n'existe aucun point de données FailedInvocations, cela signifie qu’Amazon EventBridge a bien transmis l'événement à la cible. Il est toutefois possible 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 obtenir plus d'informations, consultez les métriques Amazon CloudWatch de la cible, ainsi que tous les journaux pertinents.

  • Associez une file d'attente de lettres mortes (DLQ) Amazon Simple Queue Service (Amazon SQS) à la cible. Les événements qui n'ont pas été transmis à la cible sont envoyés à la file d'attente de lettres mortes. Vous pouvez utiliser cette méthode pour obtenir plus d’informations sur les événements ayant échoué. Consultez cet extrait de message provenant de la DLQ pour un événement ayant échoué :

    "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"
                    },

    Ce message indique que le service Amazon EventBridge ne dispose pas des autorisations nécessaires pour invoquer la cible Lambda.

  • Les règles Amazon EventBridge peuvent prendre en charge jusqu'à cinq cibles. Vous pouvez temporairement attacher un groupe Amazon 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 des cibles. Le journal ou la rubrique fournit les services suivants :

  • Vérification du corps de l'événement et des champs spécifiques qui doivent être analysés et traités par la cible

  • Confirmation de la transmission de l'événement à la cible

  • Vérification que le transformateur d'entrée a été correctement configuré

Informations connexes

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

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

Comment résoudre les erreurs dans le planificateur Amazon EventBridge ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois