Direkt zum Inhalt

Wie behebe ich Probleme mit EventBridge-Regeln?

Lesedauer: 7 Minute
0

Meine Amazon-EventBridge-Regel wird nicht an das Ziel gesendet.

Lösung

Hinweis: Die folgenden Schritte zur Problembehandlung gelten für alle EventBridge-Zieltypen. Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei AWS CLI-Fehlern. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Deine Konfiguration überprüfen

Um sicherzustellen, dass du die EventBridge-Regeln richtig konfiguriert hast, überprüfe die folgenden Einstellungen.

Sich vergewissern, dass das Ereignis eingetreten ist

Hinweis: Globale AWS-Services sind nur in der Region us-east-1 verfügbar. Wenn du eine Regel für diese Services in einer anderen Region erstellt hast, leiten die Services die Ereignisse nicht an EventBridge weiter. Daher führt EventBridge die Regel nicht aus.

Die CloudWatch-Metriken überprüfen

Um die Ursache des Problems zu ermitteln, überprüfe die Amazon-CloudWatch-Konsole im AWS/Events-Namespace auf die folgenden EventBridge-Metriken:

  • Überprüfe TriggeredRules, um zu klären, ob EventBridge die Regel ausgeführt hat. Wenn der Wert 0 ist, überprüfe deine API-Aufrufe, um zu klären, ob das Ereignis eingetreten ist. Du kannst den Zeitstempel dieser Metrik verwenden, um zu überprüfen, wann das Ereignis eingetreten ist.
  • Überprüfe Invocations, um zu klären, ob EventBridge das Ziel aufgerufen hat. Wenn es einen Wert für TriggeredRules, aber nicht für Invocations gibt, hat die Regel das Ziel nicht aufgerufen. Um dieses Problem zu beheben, überprüfe die Zielkonfiguration der Regel.
  • Überprüfe FailedInvocations, um zu klären, ob der Zielaufruf fehlgeschlagen ist. Wenn es einen Wert für Invocations und auch für FailedInvocations gibt, ist das Problem im Ziel aufgetreten.

Die API-Aufrufe deiner Konfiguration überprüfen

Überprüfe den AWS-CloudTrail-Ereignisverlauf, um sicherzustellen, dass der API-Aufruf für Ereignisse zum erwarteten Zeitpunkt erfolgt ist. Stelle außerdem sicher, dass das Ereignis allen Feldern im Ereignismuster entspricht.

Sich vergewissern, dass das Ereignis dem Regelereignismuster entspricht

Damit EventBridge eine Regel ausführen kann, müssen alle Felder in einem Ereignismuster mit dem Ereignis für diese Regel übereinstimmen. Verwende das EventBridge-Sandbox-Tool, um zu testen, ob das Ereignis einem bestimmten Ereignismusterfeld entspricht. Es hat sich bewährt, Tests mit einem Ereignismuster zu beginnen, das nur wenige Felder verwendet.

Beispiel für ein Ereignismuster:

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

Wenn es eine Übereinstimmung mit diesem Ereignismuster gibt, erhöhe die Komplexität des Ereignismusters. Jedes neue Feld grenzt den Fokus des Ereignismustertests ein.

Wenn du das Ereignisschema nicht kennst, füge vorübergehend ein Amazon-CloudWatch-Logs-Gruppenziel oder ein Amazon Simple Notification Service (Amazon SNS)-Thema hinzu. Prüfe die Ereignisstruktur, die EventBridge an das CloudWatch-Logs-Gruppenziel oder das Amazon-SNS-Thema übermittelt. Schreibe dann das Muster so um, dass es dem Ereignis entspricht.

Beispiel für ein Ereignismuster:

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

Hinweis: Das vorherige Muster bezieht sich auf eine Liste von Amazon Simple Storage Service (Amazon S3)-API-Aufrufen. Es gleicht die API-Aufrufe mit einem bestimmten Amazon-S3-Bucket für ein Objekt ab, das entweder mit feature1 oder feature2 beginnt.

Du kannst auch die TestEventPattern-API verwenden, um zu überprüfen, ob das Ereignis dem Ereignismuster entspricht.

Verwende die folgenden allgemeinen Ereignismuster, die auf dem AWS-Service basieren, der das Ereignis enthält.

Statusänderungen der Amazon Elastic Compute Cloud (Amazon EC2)-Instance:

{
    "source": ["aws.ec2"],
    "detail-type": ["EC2 Instance State-change Notification"],
    "detail": {
        "state": ["running", "stopped"]
    }
}

Failover oder Ausfälle von Amazon Relational Database Service (Amazon RDS):

{
    "source": ["aws.rds"],
    "detail-type": ["RDS DB Instance Event"],
    "detail": {
        "EventCategories": ["failover", "failure"]
    }
}

AWS-Step-Functions-Ausführungen, die fehlschlagen, das Timeout überschreiten oder abgebrochen werden:

{
  "source": ["aws.states"],
  "detail-type": ["Step Functions Execution Status Change"],
  "detail": {
    "status": ["FAILED", "TIMED_OUT", "ABORTED"],
    "stateMachineArn": ["arn:aws:states:us-east-1:123456789012:stateMachine:MyStateMachine"]
  }
}

Die Syntax des Ereignismusters überprüfen

Stelle sicher, dass das Ereignismuster der folgenden Syntax entspricht:

  • Setze alle Feldnamen oder Werte in Anführungszeichen.
  • Verwende die Array-Schreibweise, nicht die equals-Methode. Verwende beispielsweise "state": ["running"] nicht "state": "running".
  • Vergewissere dich, dass die Verschachtelungsebenen in deinem Detailobjekt deiner Konfiguration entsprechen.
  • Stelle sicher, dass alle Felder übereinstimmen. Ereignismuster verwenden AND-Logik, nicht OR.
  • Stelle sicher, dass du Platzhalter auf der Grundlage des Ereignisschemas korrekt verwendest.

Sich vergewissern, dass das Ziel das Ereignis erfolgreich verarbeitet hat

Problembehandlung bei fehlgeschlagenen Aufrufen

Wenn FailedInvocations in der CloudWatch-Konsole einen Datenpunkt enthält, überprüfe deine Zielkonfiguration und deine Berechtigungen auf Probleme.

EventBridge muss die Berechtigung haben, ein Ziel aufzurufen. Wenn du EventBridge verwendest, um Regeln zu erstellen, fügt die Konsole automatisch die erforderlichen Berechtigungen zu den zugehörigen Ressourcen hinzu. Wenn du jedoch AWS SDKs, die AWS CLI oder AWS CloudFormation verwendest, um die Regel bereitzustellen, musst du Berechtigungen konfigurieren. Du kannst eine IAM-Rolle verwenden, an die die erforderlichen EventBridge-Richtlinien angefügt sind, oder eine ressourcenbasierte Richtlinie.

Eine Warteschlange für unzustellbare Nachrichten konfigurieren

Schlägt ein Aufruf fehl, wiederholt EventBridge ihn automatisch mit exponentiellem Backoff.

Um die Ursache für FailedInvocations zu ermitteln, gehe wie folgt vor, um dem Ziel eine Amazon Simple Queue Service (Amazon SQS)-Warteschlange für unzustellbare Nachrichten zuzuordnen:

  1. Öffne die EventBridge-Konsole.
  2. Wähle Regeln und dann deine Regel aus.
  3. Wähle unter Ziele das Ziel aus und wähle dann Bearbeiten.
  4. Erweitere Zusätzliche Einstellungen und konfiguriere dann die Werte Maximales Alter des Ereignisses und Wiederholungsversuche.
    Hinweis: EventBridge sendet das Ereignis erst dann an die Warteschlange für unzustellbare Nachrichten, wenn die maximale Verweildauer des Ereignisses und die Anzahl der Wiederholungsversuche überschritten wurde. Standardmäßig sind diese Werte auf das Maximum von 24 Stunden und 185 Wiederholungsversuchen festgelegt.
  5. Wähle unter Warteschlange für unzustellbare Nachrichten eine Amazon-SQS-Warteschlange im gleichen oder einem anderen AWS-Konto aus. Wähle dann die SQS-Warteschlange aus, mit der du fehlgeschlagene Ereignisse erfasst, nachdem EventBridge die Wiederholungsereignisse abgeschlossen hat.
    Hinweis: Wenn du keine vorhandene Warteschlange hast, erstelle eine SQS-Warteschlange.
  6. Wähle Nächster Schritt oder Regel aktualisieren, um deine Änderungen zu speichern.

Hinweis: Wenn keine FailedInvocations-Datenpunkte vorhanden sind, hat EventBridge das Ereignis erfolgreich an das Ziel übermittelt und das Problem liegt beim Ziel. Beispielsweise können bei einem AWS-Lambda-Ziel Fehler auftreten, wenn es ausgeführt oder gedrosselt wird. Um diese Probleme zu beheben, überprüfe die CloudWatch-Metriken und -Protokolle für das Ziel.

Problembehandlung bei fehlgeschlagenen Aufrufen mit der Warteschlange für unzustellbare Nachrichten

Wenn es fehlgeschlagene Aufrufe für die Regel gibt, protokolliert die Warteschlange für unzustellbare Nachrichten die Fehlermeldung.

Gehe wie folgt vor, um den Fehler zu überprüfen:

  1. Öffne die Amazon-SQS-Konsole.
  2. Wähle Warteschlangen und dann die Warteschlange für unzustellbare Nachrichten aus.
  3. Wähle Senden und Empfangen von Nachrichten aus.
  4. Wähle Abruf von Nachrichten.
  5. Wähle eine Fehlermeldung aus der Liste aus.
  6. Überprüfe unter Attribute die Fehlerdetails.
    Die folgende Beispielnachricht zeigt, dass EventBridge nicht über die erforderlichen Berechtigungen zum Aufrufen des Lambda-Ziels verfügt:
    "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"
                    },

Ähnliche Informationen

Problembehebung bei Amazon EventBridge

Warum hat meine EventBridge-Regel meine Lambda-Funktion nicht aufgerufen?

Wie behebe ich Fehler im EventBridge Scheduler?

Verwenden von Warteschlangen für unzustellbare Nachrichten zur Verarbeitung nicht zugestellter Ereignisse in EventBridge

AWS OFFICIALAktualisiert vor 7 Monaten