Problembehebung bei Amazon EventBridge - Amazon EventBridge

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Problembehebung bei Amazon EventBridge

Sie können die Schritte in diesem Abschnitt verwenden, um Probleme bei Amazon zu beheben EventBridge.

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

Ein Grund dafür, dass Ihre Lambda-Funktion möglicherweise nicht ausgeführt wird, liegt darin, dass Sie nicht über die richtigen Berechtigungen verfügen.

So überprüfen Sie Ihre Berechtigungen für die Lambda-Funktion
  1. Führen Sie mit dem AWS CLI den folgenden Befehl mit Ihrer Funktion und Ihrer AWS Region aus:

    aws lambda get-policy --function-name MyFunction --region us-east-1

    Die Ausgabe sollte folgendermaßen aussehen.

    { "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
  2. Wenn folgende Meldung angezeigt wird.

    A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.

    Oder wenn Ihnen die Ausgabe zwar angezeigt wird, Sie aber events.amazonaws.com nicht als vertrauenswürdige Entität in der Richtlinie finden können, führen Sie den folgenden 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
  3. Wenn die Ausgabe ein SourceAccount-Feld enthält, müssen Sie es entfernen. Eine SourceAccount Einstellung EventBridge verhindert, dass die Funktion aufgerufen werden kann.

Anmerkung

Wenn die Richtlinie falsch ist, können Sie die Regel in der EventBridge Konsole bearbeiten, indem Sie sie entfernen und dann wieder zur Regel hinzufügen. Die EventBridge Konsole legt dann die richtigen Berechtigungen für das Ziel fest.

Wenn Sie einen bestimmten Lambda-Alias oder eine spezielle Version verwenden, fügen Sie die --qualifier-Parameter in den Befehlen aws lambda get-policy und aws lambda add-permission hinzu, wie im folgenden Befehl gezeigt.

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 --qualifier alias or version

Ich habe gerade eine Regel erstellt oder bearbeitet, sie stimmt aber nicht mit einem Testereignis überein.

Wenn Sie an einer Regel oder deren Zielen Änderungen vornehmen, stimmen die Einstellungen der eingehenden Ereignisse möglicherweise nicht sofort mit den aktualisierten Regeln überein. Warten Sie einen Augenblick, bis die Änderungen wirksam werden.

Wenn die Ereignisse nach kurzer Zeit immer noch nicht übereinstimmen, überprüfen Sie die CloudWatch Metriken TriggeredRules und FailedInvocations Ihre Regel. Invocations Weitere Informationen zu diesen Metriken finden Sie unter Amazon überwachen EventBridge.

Wenn die Regel einem Ereignis eines AWS Dienstes entsprechen soll, gehen Sie wie folgt vor:

  • Verwenden Sie die Aktion TestEventPattern, um zu testen, ob das Ereignismuster Ihrer Regel mit einem Testereignis übereinstimmt. Weitere Informationen finden Sie TestEventPatternin der Amazon EventBridge API-Referenz.

  • Verwenden Sie die Sandbox auf der EventBridge Konsole.

Meine Regel wurde nicht zu dem Zeitpunkt ausgeführt, den ich im ScheduleExpression angegeben habe.

Stellen Sie sicher, dass Sie den Zeitplan für die Regel auf die Zeitzone UTC+0 eingestellt haben. Wenn der ScheduleExpression korrekt ist, befolgen Sie die Schritte unter Ich habe gerade eine Regel erstellt oder bearbeitet, sie stimmt aber nicht mit einem Testereignis überein..

Meine Regel wurde nicht zum erwarteten Zeitpunkt ausgeführt.

EventBridge führt Regeln innerhalb einer Minute nach der von Ihnen festgelegten Startzeit aus. Der Countdown beginnt zu laufen, sobald Sie die Regel erstellen.

Anmerkung

Geplante Regeln weisen die Zustellungsart guaranteed auf, was bedeutet, dass Ereignisse für jeden erwarteten Zeitpunkt mindestens einmal ausgelöst werden.

Sie können einen Cron-Ausdruck verwenden, um Ziele zu einem bestimmten Zeitpunkt aufzurufen. Wenn Sie eine Regel erstellen möchten, die alle vier Stunden in der 0. Minute ausgeführt wird, gehen Sie wie folgt vor:

  • In der EventBridge Konsole verwenden Sie den Cron-Ausdruck0 0/4 * * ? *.

  • Mit dem AWS CLI verwenden Sie den Ausdruckcron(0 0/4 * * ? *).

Um beispielsweise mithilfe von eine Regel mit dem Namen zu erstellenTestRule, die alle 4 Stunden ausgeführt wird AWS CLI, verwenden Sie den folgenden Befehl.

aws events put-rule --name TestRule --schedule-expression 'cron(0 0/4 * * ? *)'

Wenn Sie eine Regel alle fünf Minuten ausführen möchten, verwenden Sie den folgenden Cron-Ausdruck.

aws events put-rule --name TestRule --schedule-expression 'cron(0/5 * * * ? *)'

Die beste Auflösung für eine EventBridge Regel, die einen Cron-Ausdruck verwendet, ist eine Minute. Die geplante Regel wird innerhalb der angegebenen Minute ausgeführt, aber nicht exakt in der 0. Sekunde.

Da EventBridge die Zieldienste verteilt sind, kann es zwischen der Ausführung der geplanten Regel und dem Zeitpunkt, zu dem der Zieldienst die Aktion auf der Zielressource ausführt, zu einer Verzögerung von mehreren Sekunden kommen.

Meine Regel entspricht AWS globalen Service-API-Aufrufen, wurde aber nicht ausgeführt

AWS globale Dienste wie IAM und Amazon Route 53 sind nur in der Region USA Ost (Nord-Virginia) verfügbar, sodass Ereignisse aus AWS API-Aufrufen von globalen Diensten nur in dieser Region verfügbar sind. Weitere Informationen finden Sie unter Ereignisse im Zusammenhang mit Dienstleistungen AWS.

Die mit meiner Regel verknüpfte IAM-Rolle wird ignoriert, wenn die Regel ausgeführt wird.

EventBridge verwendet nur IAM-Rollen für Regeln, die Ereignisse an Kinesis-Streams senden. Für Regeln, die Lambda-Funktionen und Amazon SNS-Themen aufrufen, müssen Sie ressourcenbasierte Berechtigungen erteilen.

Stellen Sie sicher, dass Ihre regionalen AWS STS Endgeräte aktiviert sind, damit sie verwendet werden EventBridge können, wenn Sie die von Ihnen angegebene IAM-Rolle übernehmen. Weitere Informationen finden Sie im IAM-Benutzerhandbuch unter Aktivierung und Deaktivierung AWS STS in einer AWS Region.

Meine Regel verfügt über ein Ereignismuster, das einer Ressource entsprechen soll, aber es stimmen keine Ereignisse überein.

Die meisten Dienste in AWS behandeln einen Doppelpunkt (:) oder einen Schrägstrich (/) als dasselbe Zeichen in Amazon Resource Names (ARNs)., EventBridge verwenden jedoch eine exakte Übereinstimmung in den Ereignismustern und Regeln. Verwenden Sie also die richtigen ARN-Zeichen zum Erstellen von Ereignismustern, sodass sie mit der ARN-Syntax in dem Ereignis übereinstimmen.

Einige Ereignisse, wie z. B. AWS API-Aufrufereignisse von CloudTrail, haben im Feld Ressourcen nichts.

Die Bereitstellung meines Ereignisses an das Ziel verzögerte sich.

EventBridge versucht, ein Ereignis bis zu 24 Stunden lang an ein Ziel zu übermitteln, außer in Szenarien, in denen Ihre Zielressource eingeschränkt ist. Der erste Versuch erfolgt, sobald das Ereignis im Ereignis-Stream eintrifft. Wenn der Zieldienst Probleme hat, wird EventBridge automatisch ein neuer Termin für eine weitere Zustellung festgelegt. Wenn seit dem Eintreffen des Ereignisses 24 Stunden vergangen sind, EventBridge unterbricht der Versuch, das Ereignis zuzustellen, und veröffentlicht die FailedInvocations Metrik in CloudWatch. Wir empfehlen, dass Sie eine Warteschlange für unzustellbare Nachrichten einrichten, um Ereignisse zu speichern, die nicht erfolgreich an ein Ziel übermittelt werden konnten. Weitere Informationen finden Sie unter Verwenden von Warteschlangen mit unzustellbaren Buchstaben zur Verarbeitung nicht zugestellter Ereignisse.

Einige Ereignisse wurden nie in mein Ziel ausgeliefert

Wenn das Ziel einer EventBridge Regel über einen längeren Zeitraum eingeschränkt ist, wird die Übertragung EventBridge möglicherweise nicht erneut versucht. Wenn das Ziel beispielsweise nicht für die Verarbeitung des eingehenden Ereignisverkehrs vorgesehen ist und der Zieldienst Anfragen, die in Ihrem Namen gestellt werden, drosselt, wird die EventBridge Zustellung möglicherweise nicht erneut EventBridge versucht.

Meine Regel wurde als Antwort auf ein Ereignis mehr als einmal ausgeführt.

In seltenen Fällen kann die gleiche Regel mehr als einmal für ein einzelnes Ereignis oder eine geplante Zeit ausgeführt werden, oder dasselbe Ziel kann für eine bestimmte ausgelöste Regel mehr als einmal aufgerufen werden.

Verhindern von Endlosschleifen

In ist es möglich EventBridge, eine Regel zu erstellen, die zu Endlosschleifen führt, in denen die Regel wiederholt ausgeführt wird. Wenn Sie über eine Regel verfügen, die eine Endlosschleife verursacht, schreiben Sie sie so um, dass die Aktionen, die die Regel ausführt, nicht derselben Regel entsprechen.

Beispielsweise verursacht eine Regel, die erkennt, dass sich ACLs in einem Amazon-S3-Bucket geändert haben, und dann Software ausführt, um sie in einen neuen Zustand zu versetzen, eine Endlosschleife. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Regel so umzuschreiben, dass sie nur mit ACLs übereinstimmt, die sich in einem fehlerhaften Zustand befinden.

Eine Endlosschleife kann schnell höhere Gebühren als erwartet verursachen. Wir empfehlen, dass Sie Budgetierung verwenden, um Warnungen zu erhalten, wenn die Gebühren das von Ihnen angegebene Limit überschreiten. Weitere Informationen finden Sie unter Verwalten der Kosten mit Budgets.

Meine Ereignisse werden nicht in die Amazon SQS-Zielwarteschlange ausgeliefert

Wenn Ihre Amazon-SQS-Warteschlange verschlüsselt ist, müssen Sie einen vom Kunden verwalteten KMS-Schlüssel erstellen und den folgenden Berechtigungsabschnitt in Ihre KMS-Schlüsselrichtlinie aufnehmen. Weitere Informationen finden Sie unter AWS KMS Berechtigungen konfigurieren.

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

Meine Regel wird ausgeführt, aber mir werden keine im Amazon SNS-Thema veröffentlichten Nachrichten angezeigt.

Szenario 1

Sie benötigen die Berechtigung, Nachrichten im Amazon-SNS-Thema zu veröffentlichen. Verwenden Sie den folgenden Befehl AWS CLI, indem Sie us-east-1 durch Ihre Region ersetzen und Ihren Themen-ARN verwenden.

aws sns get-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic"

Wenn Sie über die richtige Berechtigung verfügen möchten, müssen Ihre Richtlinienattribute den folgenden ähneln.

"{\"Version\":\"2012-10-17\", \"Id\":\"__default_policy_ID\", \"Statement\":[{\"Sid\":\"__default_statement_ID\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"*\"}, \"Action\":[\"SNS:Subscribe\", \"SNS:ListSubscriptionsByTopic\", \"SNS:DeleteTopic\", \"SNS:GetTopicAttributes\", \"SNS:Publish\", \"SNS:RemovePermission\", \"SNS:AddPermission\", \"SNS:SetTopicAttributes\"], \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\", \"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"123456789012\"}}},{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}]}"

Wenn in Ihrer Richtlinie events.amazonaws.com mit Publish-Berechtigung nicht angezeigt wird, kopieren Sie zunächst die aktuelle Richtlinie und fügen Sie die folgende Anweisung zur Liste der Anweisungen hinzu.

{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}

Legen Sie dann die Themenattribute fest AWS CLI, indem Sie den folgenden Befehl verwenden.

aws sns set-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic" --attribute-name Policy --attribute-value NEW_POLICY_STRING
Anmerkung

Wenn die Richtlinie falsch ist, können Sie die Regel auch in der EventBridge Konsole bearbeiten, indem Sie sie entfernen und dann wieder zur Regel hinzufügen. EventBridge legt die richtigen Berechtigungen für das Ziel fest.

Szenario 2

Wenn Ihr SNS-Thema verschlüsselt ist, müssen Sie den folgenden Abschnitt in Ihre KMS-Schlüsselrichtlinie aufnehmen.

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

Mein Amazon SNS SNS-Thema hat EventBridge auch nach dem Löschen der Regel, die mit dem Amazon SNS SNS-Thema verknüpft ist, weiterhin Berechtigungen

Wenn Sie eine Regel mit Amazon SNS als Ziel erstellen, EventBridge fügt Ihrem Amazon SNS SNS-Thema in Ihrem Namen Berechtigungen hinzu. Wenn Sie die Regel kurz nach ihrer Erstellung löschen, wird die Genehmigung EventBridge möglicherweise nicht aus Ihrem Amazon SNS SNS-Thema entfernt. Wenn dies geschieht, können Sie die Berechtigung aus dem Thema mithilfe des Befehls aws sns set-topic-attributes entfernen. Weitere Informationen zu ressourcenbasierten Berechtigungen für das Senden von Ereignissen finden Sie unter Verwenden ressourcenbasierter Richtlinien für Amazon EventBridge.

Mit welchen IAM-Bedingungsschlüsseln kann ich sie verwenden? EventBridge

EventBridge unterstützt die AWS-weiten Bedingungsschlüssel (siehe IAM- und AWS STS Bedingungskontextschlüssel im IAM-Benutzerhandbuch) sowie die unter aufgeführten Schlüssel. Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle

Woran erkenne ich, dass EventBridge Regeln verletzt wurden?

Sie können den folgenden Alarm verwenden, um Sie zu benachrichtigen, wenn Ihre EventBridge Regeln verletzt werden.

Um einen Alarm zu erstellen, der warnt, wenn Regeln nicht eingehalten werden,
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie Alarm erstellen aus. Wählen Sie im Bereich CloudWatch Metriken nach Kategorie die Option Event-Metriken aus.

  3. Wählen Sie in der Liste der Metriken die Option aus FailedInvocations.

  4. Wählen Sie über dem Diagramm Statistic und Sum aus.

  5. Wählen Sie einen Wert für Period aus, z. B. 5 Minuten. Wählen Sie Weiter aus.

  6. Geben Sie unter Alarmschwellenwert für Name beispielsweise einen eindeutigen Namen für den Alarm ein myFailedRules. Geben Sie für Beschreibung eine Beschreibung des Alarms ein. Beispiel: Regeln übermitteln keine Ereignisse an das Ziel.

  7. Wählen Sie für is die Option >= und 1 aus. Geben Sie für for die Option 10 ein.

  8. Wählen Sie unter Actions (Aktionen) für Whenever this alarm die Option State is ALARM (Status ist ALARM) aus.

  9. Wählen Sie für Send notification to (Benachrichtigung senden an) ein vorhandenes Amazon SNS-Thema aus oder erstellen Sie ein neues. Um ein neues Thema zu erstellen, wählen Sie New list aus. Geben Sie einen Namen für das neue Amazon SNS SNS-Thema ein, zum Beispiel: myFailedRules.

  10. Geben Sie für Email list (E-Mail-Liste) eine durch Kommata getrennte Liste der E-Mail-Adressen ein, die benachrichtigt werden sollen, wenn der Alarm in den Status ALARM versetzt wird.

  11. Wählen Sie Alarm erstellen aus.