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 Themen in diesem Abschnitt verwenden, um Probleme mit Amazon zu EventBridge beheben.

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 Kennzahlen 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 EventBridge APIAmazon-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 in der Zeitzone UTC +0 festgelegt 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 API Serviceaufrufen, wurde aber nicht ausgeführt

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

Die meiner Regel zugeordnete 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 oder SNS Amazon-Themen aufrufen, müssen Sie ressourcenbasierte Berechtigungen bereitstellen.

Vergewissern Sie sich, dass Ihre regionalen AWS STS Endgeräte aktiviert sind, damit sie verwendet werden EventBridge können, wenn Sie die von Ihnen angegebene Rolle übernehmen. IAM Weitere Informationen finden Sie im IAMBenutzerhandbuch 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 aber eine exakte Übereinstimmung in den Ereignismustern und Regeln. Achten Sie darauf, dass Sie bei der Erstellung von Ereignismustern die richtigen ARN Zeichen verwenden, damit sie der ARN Syntax des entsprechenden Ereignisses entsprechen.

Bei einigen Ereignissen, wie z. B. AWS API Anrufereignissen von CloudTrail, ist im Feld Ressourcen nichts enthalten.

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 Ihnen, eine einzurichten, DLQ um Ereignisse zu speichern, die nicht erfolgreich an ein Ziel übermittelt werden konnten. Weitere Informationen finden Sie unter Verwenden von Warteschlangen mit unzugestellten Nachrichten zur Verarbeitung nicht zugestellter Ereignisse in EventBridge.

Einige Ereignisse wurden nie in mein Ziel ausgeliefert

Wenn das Ziel einer EventBridge Regel über einen längeren Zeitraum eingeschränkt ist, versuchen Sie EventBridge möglicherweise nicht erneut, es zuzustellen. Wenn das Ziel beispielsweise nicht für die Verarbeitung des eingehenden Ereignisverkehrs vorgesehen ist und der Zieldienst Anfragen, die in Ihrem Namen gestellt werden, einschränkt, 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 Änderungen in einem Amazon S3-Bucket vorgenommen ACLs wurden, und dann Software ausführt, um sie in einen neuen Status zu versetzen, eine Endlosschleife. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Regel so umzuschreiben, dass sie nur Treffer enthältACLs, die sich in einem schlechten 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 an die SQS Amazon-Zielwarteschlange gesendet

Wenn Ihre SQS Amazon-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 ich sehe keine Nachrichten, die in meinem SNS Amazon-Thema veröffentlicht wurden

Szenario 1

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

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 SNS Amazon-Thema hat immer noch Berechtigungen für, EventBridge auch nachdem ich die mit dem SNS Amazon-Thema verknüpfte Regel gelöscht habe

Wenn Sie eine Regel mit Amazon SNS als Ziel erstellen, EventBridge fügt Ihrem SNS Amazon-Thema in Ihrem Namen Berechtigungen hinzu. Wenn Sie die Regel kurz nach ihrer Erstellung löschen, wird die Berechtigung EventBridge möglicherweise nicht aus Ihrem SNS Amazon-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 Verwendung ressourcenbasierter Richtlinien für Amazon EventBridge.

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

EventBridge unterstützt die AWS-weiten Bedingungstasten (siehe IAMund AWS STS Bedingungskontexttasten im IAMBenutzerhandbuch) sowie die unter Verwendung der IAM Versicherungsbedingungen bei Amazon EventBridge aufgelisteten Schlüssel.

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 Messwerte 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 Aktionen für Wann immer dieser Alarm die Option Status ist ausALARM.

  9. Wählen Sie unter Benachrichtigung senden an ein vorhandenes SNS Amazon-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 SNS Amazon-Thema ein, zum Beispiel: myFailedRules.

  10. Geben Sie im Feld E-Mail-Liste eine durch Kommas getrennte Liste mit E-Mail-Adressen ein, die benachrichtigt werden sollen, wenn sich der Alarmstatus ändert. ALARM

  11. Wählen Sie Alarm erstellen aus.