Fehlerbehebung 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.

Fehlerbehebung bei Amazon EventBridge

Sie können die Schritte in diesem Abschnitt verwenden, um Probleme mit 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. AWS CLI Führen Sie mithilfe der 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 verhindert EventBridge , dass die Funktion aufrufen 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 Ereignisse nach kurzer Zeit immer noch nicht übereinstimmen, überprüfen Sie die CloudWatch Metriken TriggeredRulesInvocations, und FailedInvocations für Ihre Regel. Weitere Informationen zu diesen Metriken finden Sie unter Überwachen von Amazon EventBridge.

Wenn die Regel einem Ereignis von einem - AWS Service entsprechen soll, führen Sie einen der folgenden Schritte aus:

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

  • Verwenden Sie die Sandbox in 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-Ausdruck 0 0/4 * * ? *.

  • Mit der verwenden AWS CLI Sie den Ausdruck cron(0 0/4 * * ? *).

Um beispielsweise eine Regel mit dem Namen zu erstellen, TestRule 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 feinste Auflösung für eine EventBridge Regel, die einen Cron-Ausdruck verwendet, beträgt eine Minute. Die geplante Regel wird innerhalb der angegebenen Minute ausgeführt, aber nicht exakt in der 0. Sekunde.

Da - EventBridge und -Zielservices verteilt sind, kann es zwischen dem Zeitpunkt, zu dem die geplante Regel ausgeführt wird, und dem Zeitpunkt, zu dem der Zielservice die Aktion für die Zielressource ausführt, zu einer Verzögerung von mehreren Sekunden kommen.

Meine Regel stimmt mit AWS globalen Service-API-Aufrufen überein, wurde aber nicht ausgeführt

AWS Globale Services 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 Services nur in dieser Region verfügbar sind. Weitere Informationen finden Sie unter Ereignisse von - AWS Services.

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 Endpunkte aktiviert sind, damit sie bei der Übernahme der von Ihnen bereitgestellten IAM-Rolle verwenden EventBridge kann. Weitere Informationen finden Sie unter Aktivieren und Deaktivieren von AWS STS in einer - AWS Region im IAM-Benutzerhandbuch.

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

Die meisten Services in AWS behandeln einen Doppelpunkt (:) oder Schrägstrich (/) als dasselbe Zeichen in Amazon-Ressourcennamen (ARNs ). EventBridge verwendet jedoch eine genaue Übereinstimmung in 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, z. B. AWS API-Aufrufereignisse von CloudTrail, haben nichts im Ressourcenfeld.

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

EventBridge versucht, ein Ereignis für bis zu 24 Stunden 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 Zielservice Probleme hat, EventBridge plant automatisch eine weitere Lieferung. Wenn seit dem Eintreffen des Ereignisses 24 Stunden vergangen sind, versucht EventBridge nicht mehr, 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 Richtlinie zur Wiederholung von Ereignissen und Verwendung von Warteschlangen für unzustellbare Nachrichten.

Einige Ereignisse wurden nie in mein Ziel ausgeliefert

Wenn das Ziel einer EventBridge Regel für einen längeren Zeitraum eingeschränkt ist, EventBridge versucht möglicherweise keine erneute Zustellung. Wenn das Ziel beispielsweise nicht für die Verarbeitung des eingehenden Ereignisdatenverkehrs bereitgestellt wird und der Zielservice Anforderungen drosselt, die in Ihrem Namen EventBridge sendet, versucht EventBridge möglicherweise nicht, die Zustellung zu wiederholen.

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 Konfigurieren von AWS KMS Berechtigungen.

{ "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 mit der AWS CLI, ersetzen Sie us-east-1 durch Ihre Region und verwenden Sie Ihren Themen-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 mithilfe der fest AWS CLI und verwenden Sie den folgenden Befehl.

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-Thema verfügt auch nach dem Löschen der dem Amazon SNSThema zugeordneten Regel weiterhin über Berechtigungen für EventBridge .

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

Welche IAM-Bedingungsschlüssel kann ich mit 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üsselVerwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle.

Wie kann ich feststellen, wann EventBridge Regeln verletzt werden?

Sie können den folgenden Alarm verwenden, um Sie zu benachrichtigen, wenn Ihre EventBridge Regeln nicht eingehalten 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 Ereignismetriken aus.

  3. Wählen Sie in der Liste der Metriken ausFailedInvocations.

  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 einen eindeutigen Namen für den Alarm ein, z. B. 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-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.