Warum hat meine EventBridge-Regel nicht meine Lambda-Funktion ausgelöst?

Lesedauer: 4 Minute
0

Ich möchte herausfinden, warum die Amazon-EventBridge-Regel, die ich mit AWS Command Line Interface (AWS CLI) erstellt habe, meine AWS Lambda-Funktion nicht aufruft.

Kurzbeschreibung

Gehen Sie wie folgt vor, um das Problem zu ermitteln:

  1. Vergewissern Sie sich, dass die Ereignisquelle ein Ereignis veröffentlicht und die zugehörige Amazon-EventBridge-Regel ausgelöst hat.
  2. Vergewissern Sie sich, dass die EventBridge-Regel das konfigurierte Ziel aufgerufen hat.
  3. Wenn der Zielaufruf fehlschlägt, vergewissern Sie sich, dass die AWS Lambda-Funktion in ihrer Ressourcenrichtlinie über die nötigen Berechtigungen verfügt.

Behebung

**Hinweis:**Wenn beim Ausführen von Befehlen in AWS CLI Fehler auftreten, stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden.

Überprüfen von CloudWatch-Metriken für die EventBridge-Regel

  1. Öffnen Sie die Amazon-CloudWatch-Konsole.
  2. Wählen Sie im linken Navigationsbereich unter Metriken die Option Alle Metriken aus.
  3. Wählen Sie den Namespace AWS/Events aus.
  4. Wählen Sie die Metriken TriggerRules, Aufrufe und FailedInvocations (falls verfügbar) für die betreffende Regel aus. Wenn nötig, zeigen Sie diese Metriken mit der Summe-Statistik an.
    **Hinweis:**Die TriggerRules-Datenpunkte weisen darauf hin, dass ein Ereignis die EventBridge-Regel ausgelöst hat. Die Aufrufe-Datenpunkte weisen darauf hin, dass die EventBridge-Regel das entsprechende Ziel aufgerufen hat. Wenn die Metriken FailedInvocations-Datenpunkte enthalten, deuten diese darauf hin, dass der Zielaufruf durch die Regel möglicherweise fehlgeschlagen ist. FailedInvocations stellen einen dauerhaften Fehler dar und können durch falsche Berechtigungen oder ein fehlerhaft konfiguriertes Ziel verursacht werden.

Vergewissern Sie sich, dass die Ressourcenrichtlinie der Lambda-Funktion über die nötigen Berechtigungen verfügt

Beachten Sie Folgendes, wenn Sie eine EventBridge-Regel mit einer Lambda-Funktion als Ziel erstellen:

  • Wenn Sie die Amazon-EventBridge-Konsole verwenden, um die Regel zu erstellen, fügt die Konsole automatisch die entsprechenden Berechtigungen zur Ressourcenrichtlinie der Funktion hinzu.
  • Wenn Sie AWS CLI, SDK oder AWS CloudFormation verwenden, um eine Regel zu erstellen, müssen Sie die Berechtigungen in der Ressourcenrichtlinie manuell anwenden.

Die Berechtigungen gewähren Amazon EventBridge Zugriff zum Aufrufen der Lambda-Funktion.

Überprüfen der mit der Lambda-Zielfunktion verknüpften Berechtigungen

Gehen Sie wie folgt vor:

  1. Öffnen Sie die AWS-Lambda-Konsole.
  2. Wählen Sie die Lambda-Zielfunktion aus.
  3. Wählen Sie die Registerkarte Konfiguration und anschließend Berechtigungen aus.
  4. Lesen Sie im Abschnitt Ressourcenbasierte Richtlinie das Richtliniendokument.

Oder verwenden Sie die GetPolicy-API oder den AWS-CLI-Befehl get-policy mit den entsprechenden Eingaben, um die Ressourcenrichtlinie der Lambda-Funktion abzurufen.

Das folgende Beispiel zeigt eine Ressourcenrichtlinie, die EventBridge den Aufruf der Lambda-Funktion erlaubt:

{
  "Effect": "Allow",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:region:account-id:function:function-name",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Condition": {
    "ArnLike": {
      "AWS:SourceArn": "arn:aws:events:region:account-id:rule/rule-name"
    }
  },
  "Sid": "InvokeLambdaFunction"
}

**Hinweis:**Ersetzen Sie den ARN durch die entsprechende Region, die Konto-ID und den Ressourcennamen.

Aktualisieren der Ressourcenrichtlinie

Gehen Sie wie folgt vor, wenn Sie die Ressourcenrichtlinie aktualisieren müssen:

  1. Öffnen Sie die AWS-Lambda-Konsole.
  2. Wählen Sie die Lambda-Zielfunktion aus.
  3. Wählen Sie die Registerkarte Konfiguration und anschließend Berechtigungen aus.
  4. Wählen Sie im Abschnitt Ressourcenbasierte Richtlinie die Option Berechtigungen hinzufügen aus.
  5. Wählen Sie AWS Service – EventBridge (CloudWatch Events) aus.
  6. Geben Sie die Statement-ID (Sid) als optionale Kennung für Ihre Richtlinienanweisung an.
  7. Geben Sie Prinzipal als events.amazonaws.com an.
    **Hinweis:**In der Regel wird dies automatisch ausgefüllt.
  8. Geben Sie den Quell-ARN als ARN der EventBridge-Regel an.
  9. Wählen Sie für Aktion die Option Lambda:InvokeFunction aus der Dropdown-Liste aus.
  10. Wählen Sie Speichern aus.

Sie können die Richtlinie auch mit der AddPermission-API oder dem AWS-CLI-Befehl add-permission für AWS Lambda aktualisieren.

Zum Beispiel:

aws lambda add-permission \--function-name MyFunction \
--statement-id MyId \
--action 'lambda:InvokeFunction' \
--principal events.amazonaws.com \
--source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule

Hinzufügen einer Amazon-SQS-Warteschlange für unzustellbare Nachrichten zum Ziel

EventBridge verwendet Amazon Simple Queue Service (Amazon SQS)-Warteschlangen für unzustellbare Nachrichten (DLQs), um Ereignisse zu speichern, die nicht an ein Ziel übermittelt werden konnten. Hängen Sie eine Amazon-SQS-DLQ an das Ziel an, das FailedInvocations meldet. Rufen Sie die Ereignisse aus der DLQ ab, um sie zu analysieren und weitere Informationen über das Problem zu erhalten. Nach der Behebung können die fehlgeschlagenen Ereignisse zur Verarbeitung erneut an das Ziel gesendet werden.

  1. Öffnen Sie die entsprechende Regel in der EventBridge-Konsole.
  2. Wählen Sie unter Ziele die Option Bearbeiten aus und erweitern Sie dann den Abschnitt Zusätzliche Einstellungen.
  3. Wählen Sie unter Warteschlange für unzustellbare Nachrichten die Option Amazon-SQS-Warteschlange in meinem AWS-Konto auswählen.
  4. Wählen Sie eine SQS-Warteschlange aus, die als DLQ verwendet werden soll.
  5. Nachdem Sie die DLQ zugewiesen haben, führen Sie die verbleibenden Schritte im Abschnitt Regel bearbeiten aus, um die Änderungen zu speichern.

Verwandte Informationen

Meine Regel wurde ausgeführt, aber meine Lambda-Funktion wurde nicht aufgerufen

Verwendung ressourcenbasierter Richtlinien für Amazon EventBridge: AWS Lambda-Berechtigungen

Richtlinie zur Wiederholung von Ereignissen und Verwendung von Warteschlangen mit unlesbaren Buchstaben

Verbesserte Wiederherstellung nach einem Ausfall für Amazon EventBridge

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 8 Monaten