Wie kann ich Probleme mit den Amazon EventBridge-Regeln beheben?

Lesedauer: 5 Minute
0

Ich möchte herausfinden, warum meine Amazon EventBridge-Regel das Ziel nicht wie erwartet ausgelöst oder aufgerufen hat.

Kurzbeschreibung

Verwenden Sie diesen Validierungs-Workflow, um das Problem zu isolieren:

  1. Vergewissern Sie sich, dass das entsprechende Ereignis eingetreten ist (z. B. ein AWS CloudTrail-API-Aufruf oder ein Simple Storage Service (Amazon S3)-Objekt-Upload).
  2. Vergewissern Sie sich, dass das Ereignis dem Regelereignismuster entspricht.
  3. Vergewissern Sie sich, dass das Ziel das Ereignis erfolgreich verarbeitet hat (z. B. hat das Ereignis eine AWS Lambda-Funktion aufgerufen).

Lösung

Gehen Sie wie folgt vor, um Probleme im Zusammenhang mit den Amazon EventBridge-Regeln zu beheben:

Bestätigen Sie ein eingehendes Ereignis

Überprüfen Sie das eingehende Ereignis auf eine oder mehrere der folgenden Arten:

  • Wenn AWS CloudTrail das Ereignis erfasst hat, analysieren Sie die CloudTrail-Protokolle. Stellen Sie sicher, dass der API-Aufruf zur erwarteten Zeit erfolgte und mit allen Feldern im Ereignismuster übereinstimmt.
    **Hinweis:**Einige AWS-Services sind nur in der Region US-East-1 verfügbar. Beispielsweise werden API-Aufrufe von AWS Identity and Access Management (IAM)nur in der Region US-east-1 veröffentlicht. Wenn eine Regel für IAM-Ereignisse in einer anderen Region erstellt wurde, werden diese Ereignisse nicht an EventBridge weitergeleitet. Daher wird die Regel nicht durch diese Ereignisse ausgelöst.
  • Die Amazon EventBridge-Konsole bietet das EventBridge-Tool Sandbox, das Beispiele für AWS- und Partnerereignisse enthält. Verwenden Sie das Tool, um das vorgeschlagene Ereignismuster mit AWS-, Partner- und benutzerdefinierten Ereignissen abzugleichen. Oder verwenden Sie die TestEventPattern-API, um eine Übereinstimmung zwischen dem Ereignismuster und dem Ereignis zu bestätigen.
  • EventBridge stellt TriggerRules-Metriken bereit, um eine Regel für erfolgreich zugeordnete Ereignisse zu melden. Die Zeitstempel der TriggerredRules-Datenpunkte zeigen, wann das Ereignis eingetreten ist.

CloudWatch-Metriken überprüfen

Gehen Sie wie folgt vor, um die CloudWatch-Metriken für eine Amazon EventBridge-Regel zu überprüfen:

  1. Öffnen Sie die CloudWatch-Konsole.
  2. Wählen Sie Alle Metriken aus.
  3. Wählen Sie den AWS/Events-Namespace aus.
  4. Wählen Sie die Metriken TriggerRules, Invocations und FailedInvocations (falls verfügbar) für die betreffende Regel aus. Sie können diese Metriken mit der SUM-Statistik anzeigen.

Überprüfen Sie das Ereignismuster

Um ein Ereignis abzugleichen, müssen alle Felder in einem Ereignismuster übereinstimmen. Verwenden Sie das Sandbox-Tool, um das gewünschte Ereignis anhand eines Ereignismusters mit einigen Feldern zu testen. Verwenden Sie beispielsweise ein einfaches Ereignismuster, wie es hier aufgeführt ist:

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

Erhöhen Sie die Komplexität des Eventmusters, wenn Sie erfolgreiche Spiele erzielen. Jedes Feld, das Sie dem Ereignismuster hinzufügen, filtert die Ereignisse, denen es entspricht, und schränkt den Fokus ein.

Im Folgenden finden Sie ein Beispiel für ein Ereignismuster. Das Muster entspricht einer Liste von Amazon S3-API-Aufrufen für einen bestimmten Bucket für ein Objekt, das mit einer von zwei Zeichenketten beginnt: feature1 und 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/"
        }
      ]
    }
  }
}

Fügen Sie nach und nach Felder hinzu, um die Felder zu isolieren, die nicht den gewünschten Ereignissen entsprechen.

Validieren Sie das Ziel

  • Die Metrik Aufrufe veröffentlicht einen Datenpunkt, wenn eine Regel ein Ereignis an ein Ziel weiterleitet. Dies steht für erfolgreiche und fehlgeschlagene Aufrufe.

  • Amazon EventBridge gibt einen FailedInvocations-Datenpunkt aus, wenn das Ziel dauerhaft nicht aufgerufen werden kann. FailedInvocations weist auf Probleme mit der Zielkonfiguration oder auf Probleme hin, die auf unzureichende Berechtigungen zurückzuführen sind.

  • Amazon EventBridge muss über die entsprechenden Berechtigungen zum Aufrufen des Ziels verfügen. Je nach Ziel gewährt die Rolle AWS Identity and Access Management (IAM) oder eine Ressourcenrichtlinie Berechtigungen.

  • Wenn Sie Regeln mit der Amazon EventBridge-Konsole erstellen, fügt die Konsole den zugehörigen Ressourcen automatisch die erforderlichen Berechtigungen hinzu.
    **Hinweis:**Konfigurieren Sie die Berechtigungen explizit, wenn Sie die Regel mithilfe des AWS-SDK, der AWS Command Line Interface (AWS CLI) oder AWS CloudFormation bereitstellen.

  • Wenn es keine FailedInvocations-Datenpunkte gibt, hat Amazon EventBridge das Ereignis erfolgreich an das Ziel übermittelt. Das Ziel funktioniert jedoch möglicherweise nicht richtig. Beispielsweise kann es bei einem AWS-Lambda-Target zu Fehlern kommen, wenn es ausgeführt wird oder wenn es gedrosselt wird. Weitere Informationen finden Sie in den Amazon CloudWatch-Metriken und allen relevanten Protokollen des Ziels.

  • Ordnen Sie dem Ziel eine Dead-Letter-Warteschlange (DLQ) von Amazon Simple Queue Service (Amazon SQS) zu. Ereignisse, die nicht an das Ziel übermittelt wurden, werden an die Warteschlange für unzustellbare Briefe gesendet. Sie können diese Methode verwenden, um mehr Informationen über fehlgeschlagene Ereignisse zu erhalten. Überprüfen Sie den folgenden Ausschnitt einer aus dem DLQ abgerufenen Nachricht auf ein fehlgeschlagenes Ereignis:

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

    Die Meldung zeigt, dass der Amazon EventBridge-Service nicht über die erforderlichen Berechtigungen verfügt, um das Lambda-Ziel aufzurufen.

  • Amazon EventBridge-Regeln unterstützen bis zu fünf Ziele. Fügen Sie vorübergehend ein Amazon CloudWatch Logs-Gruppenziel oder ein Amazon Simple Notification Service (Amazon SNS) -Thema hinzu. Diese Aktion erfasst die an die Ziele weitergeleiteten Ereignisse oder isoliert Fehlkonfigurationen von Zielen. Das Protokoll oder das Thema bietet folgende Dienste:

  • Bestätigt den Ereignistext und bestimmte Felder, die vom Ziel analysiert und verarbeitet werden müssen

  • Bestätigt, dass das Ereignis an das Ziel übermittelt wurde

  • Bestätigt, dass der Eingangstransformator korrekt konfiguriert wurde

Verwandte Informationen

Problembehebung bei Amazon EventBridge

Warum wurde meine Lambda-Funktion nicht durch meine CloudWatch Events-Regel ausgelöst?

Wie behebe ich Fehler im Amazon EventBridge Scheduler?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten