Warum hat meine EventBridge-Regel meine Lambda-Funktion nicht aufgerufen?
Die Amazon-EventBridge-Regel, die ich erstellt habe, ruft meine AWS-Lambda-Funktion nicht auf.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
CloudWatch-Metriken für die EventBridge-Regel ü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 festzustellen, ob eine geplante Regel ausgeführt wurde oder einem bestimmten Ereignis entsprach. Nachdem die Regel erfolgreich ausgeführt wurde, leitet EventBridge das Ereignis an das Ziel weiter.
- Überprüfe Invocations, um festzustellen, ob die Regel ein Ziel aufgerufen hat. EventBridge unternimmt mehrere Versuche, wenn das Ereignis nicht an das Ziel übermittelt werden kann.
- Überprüfe FailedInvocations, um festzustellen, ob EventBridge das Ziel dauerhaft nicht aufrufen konnte. Diese Metrik weist auf Probleme in der Zielkonfiguration hin.
Vergewissere sich, dass die Ressourcenrichtlinie der Lambda-Funktion über die erforderlichen Berechtigungen verfügt
EventBridge muss die Berechtigung haben, die Lambda-Funktion aufzurufen. Wenn du die EventBridge-Konsole verwendest, um die Regel zu erstellen, fügt die Konsole automatisch die erforderlichen Berechtigungen zur ressourcenbasierten Richtlinie der Funktion hinzu. Wenn du AWS CLI, AWS SDK oder AWS CloudFormation verwendest, um eine Regel zu erstellen, musst du der ressourcenbasierten Richtlinie manuell Berechtigungen hinzufügen.
Gehe wie folgt vor, um die Berechtigungen der Zielfunktion mithilfe der Lambda-Konsole zu aktualisieren:
- Öffne die Lambda-Konsole.
- Wähle deine Lambda-Funktion aus.
- Wähle die Registerkarte Konfiguration und anschließend Berechtigungen aus.
- Stelle unter Ressourcenbasierte Richtlinie sicher, dass die Richtlinie erlaubt EventBridge, die Lambda-Funktion aufzurufen.
- Wenn die Richtlinie nicht über die erforderlichen Berechtigungen verfügt, wähle Berechtigungen hinzufügen aus.
- Wähle AWS Service – EventBridge.
- (Optional) Gib eine Anweisungs-ID als Bezeichner für die Richtlinienanweisung ein.
- Gib für Prinzipal events.amazonaws.com ein.
- Gib für Quell-ARN den Amazon-Ressourcennamen (ARN) der EventBridge-Regel ein.
- Wähle für Aktion lambda:InvokeFunction aus.
- Wähle Speichern aus.
Du kannst auch die GetPolicy-API verwenden, um die ressourcenbasierte Richtlinie der Funktion anzuzeigen. Oder führe den folgenden AWS-CLI-Befehl GetPolicy aus:
aws lambda get-policy \ --function-name my-function
Hinweis: Ersetze my-function durch den Namen deiner Funktion.
Verwende die AddPermission-API, um die Richtlinie zu aktualisieren. Führe den folgenden add-permission-Befehl aus:
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
Hinweis: Ersetze MyFunction durch den Namen deiner Funktion, myID durch deine Anweisungs-ID und arn:aws:events:us-east-1:123456789012:rule/MyRule durch den Regel ARN.
Sicherstellen, dass die Ausführungsrolle über die erforderlichen Berechtigungen verfügt
Wenn du eine Ausführungsrolle verwendest, stelle sicher, dass die Rolle die Berechtigung hat, die Lambda-Funktion aufzurufen.
Wenn du die EventBridge-Konsole verwendest, um die Rolle zu erstellen, fügt die Konsole der IAM-Rolle, die an die Regel angefügt ist, automatisch die erforderlichen Berechtigungen hinzu. Wenn du die AWS CLI, das AWS SDK oder CloudFormation verwendet hast, um eine Regel zu erstellen, musst du der IAM-Rolle manuell Berechtigungen hinzufügen.
Gehe wie folgt vor, um die Berechtigungen der IAM-Rolle zu überprüfen:
- Öffne die EventBridge-Konsole.
- Wähle Regeln.
- Wähle die EventBridge-Regel aus.
- Wähle die Registerkarte Ziel aus und wähle dann die IAM-Rolle für die Regel aus.
- Stelle unter Berechtigung sicher, dass EventBridge gemäß der Richtlinie Lambda-Funktionen aufrufen kann und dass die Vertrauensrichtlinie der Rolle den Zugriff auf Lambda erlaubt.
Beispiel für eine IAM-Richtlinie:
Beispiel für eine Vertrauensbeziehung:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name" ] } ] }
Hinweis: Ersetze arn:aws:lambda:region:account-id:function:function-name durch den Funktions-ARN, account-ID durch deine AWS-Konto-ID und arn:aws:events:region:account-id:rule/rule-name durch den Regel-ARN.{ "Version": "2012-10-17", "Statement": [ { "Sid": "TrustEventBridgeService", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:events:region:account-id:rule/rule-name" } } } ] }
Du kannst auch die GetRole-API verwenden, um die IAM-Richtlinie abzurufen. Oder führe den folgenden get-role-Befehl aus:
aws iam get-role \ --role-name Test-Role
Hinweis: Ersetze Test-Role durch deinen Rollennamen.
Wenn für die Richtlinie oder Vertrauensbeziehung die erforderlichen Berechtigungen fehlen, verwende die IAM-Konsole, um die Richtlinie und die Vertrauensbeziehung zu aktualisieren.
Dem Ziel in Amazon SQS eine Warteschlange für unzustellbare Nachrichten hinzufügen
EventBridge verwendet Warteschlangen für unzustellbare Nachrichten in Amazon Simple Queue Service (Amazon SQS), um Ereignisse zu speichern, die EventBridge nicht an ein Ziel übermittelt konnte.
Um weitere Informationen darüber zu erhalten, warum ein Aufruf fehlgeschlagen ist, führe die folgenden Schritte aus, um eine Warteschlange für unzustellbare Nachrichten an das Ziel anzufügen:
- Erstelle eine Amazon-SQS-Warteschlange, die du als Warteschlange für unzustellbare Nachrichten verwenden kannst.
- Öffne die EventBridge-Konsole.
- Wähle Regeln.
- Wähle die EventBridge-Regel aus.
- Wähle unter Ziele die Option Bearbeiten aus und erweitere dann den Abschnitt Zusätzliche Einstellungen.
- Wähle unter Warteschlange für unzustellbare Nachrichten die Option Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue (Wähle im aktuellen AWS-Konto eine Amazon-SQS-Warteschlange aus, die als Warteschlange für unzustellbare Nachrichten verwendet werden soll).
- Wähle deine SQS-Warteschlange.
- Überprüfe die Änderungen und wähle dann Speichern.
Führe das Ereignis dann erneut aus, um es in der Warteschlange für unzustellbare Nachrichten aufzuzeichnen und weitere Informationen darüber zu erhalten, warum die Regel die Funktion nicht aufrufen konnte.
Ähnliche Informationen
Meine Regel wurde ausgeführt, aber meine Lambda-Funktion wurde nicht aufgerufen
Verbesserte Wiederherstellung nach einem Ausfall bei Amazon EventBridge
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Jahren
AWS OFFICIALAktualisiert vor 4 Jahren
AWS OFFICIALAktualisiert vor 4 Jahren
AWS OFFICIALAktualisiert vor 2 Jahren