View a markdown version of this page

Fehlerbehebung EventBridge bei Amazon Scheduler - EventBridge Planer

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 EventBridge bei Amazon Scheduler

Sie können die Themen in diesem Abschnitt verwenden, um häufig auftretende Amazon EventBridge Scheduler-Probleme zu beheben.

Mein Zeitplan schlägt mit Zielfehlern fehl

Fehler beim Target-Aufruf sind eines der häufigsten Probleme mit EventBridge Scheduler. Diese Fehler können aus verschiedenen Gründen auftreten:

Häufige Ursachen:

  • Fehlende oder falsche Zielparameter.

  • Probleme mit der Netzwerkkonnektivität.

  • API-Drosselung.

  • Falsche Zielkonfiguration.

Fehlerbehebungsschritte

  1. Richten Sie eine Dead-Letter Warteschlange ein (DLQ)

    • Ein DLQ hilft Ihnen, fehlgeschlagene Aufrufe zu erfassen und zu analysieren.

    • Fehlgeschlagene Aufrufe werden mit detaillierten Fehlermeldungen an den DLQ gesendet.

    • Um einen DLQ zu konfigurieren, fügen Sie ihn Ihrer Zeitplankonfiguration hinzu:

    { "DeadLetterConfig": { "Arn": "arn:aws:sqs:region:account-id:MyDLQ" } }

    Hinweis: Wenn Ihr DLQ mit einem KMS-Schlüssel verschlüsselt ist, stellen Sie sicher, dass die Schlüsselrichtlinie es dem EventBridge Scheduler ermöglicht, ihn zu verwenden:

    { "Sid": "Allow EventBridge Scheduler to use the key", "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
  2. Überprüfen Sie die API-Parameter

    • Stellen Sie sicher, dass alle erforderlichen Parameter für Ihre Ziel-API-Aufrufe vorhanden und korrekt formatiert sind.

    • Stellen Sie sicher, dass die Parameterwerte innerhalb der zulässigen Bereiche liegen.

    • Stellen Sie sicher, dass der API-Endpunkt von Ihrer VPC aus zugänglich ist, wenn Sie VPC-Endpunkte verwenden.

  3. Überprüfen Sie die Netzwerkkonfiguration

    • Wenn Anrufe aufgrund vorübergehender Netzwerkprobleme fehlschlagen, implementieren Sie eine Wiederholungslogik.

    • Beispiel für eine Wiederholungsrichtlinie:

    { "RetryPolicy": { "MaximumRetryAttempts": 3, "MaximumEventAgeInSeconds": 3600 } }
  4. Überprüfen Sie die zielspezifischen Konfigurationen

    • Stellen Sie bei Zielen mit Vorlagen (wie ECS-Aufgaben) sicher, dass Sie Überschreibungen über den Target.Input Parameter der API für die Zeitplanerstellung bereitstellen.

    • Stellen Sie sicher, dass Ihr Zieldienst unterstützt und korrekt konfiguriert wird.

Probleme mit der Terminausführung, Rolle und Berechtigungen

Probleme mit den Berechtigungen für IAM-Rollen sind ein häufiger Grund für Fehler bei der Ausführung von Zeitplänen. Gehen Sie wie folgt vor, um diese Probleme zu beheben und zu lösen:

Häufige Ursachen

  • Es fehlen die erforderlichen Berechtigungen für den Zieldienst

  • Falsche Rollenkonfiguration im Zeitplan

  • Fehlende Vertrauensbeziehung zum EventBridge Scheduler-Dienst

  • Unzureichende Berechtigungen für den Zugriff auf verschlüsselte Ressourcen

Symptome

  • Erhöhte TargetErrorCount Metrik in CloudWatch

  • Zeitpläne können ohne offensichtliche Probleme in der Zeitplankonfiguration nicht ausgeführt werden

Fehlerbehebungsschritte

  1. Überwachen Sie CloudWatch Messwerte

    • Checken Sie die TargetErrorCount Metrik ein CloudWatch.

  2. Verwenden Sie Dead-Letter Queue (DLQ), um Berechtigungsprobleme zu überprüfen

    • Konfigurieren Sie einen DLQ für Ihren Zeitplan.

    • Wenn es mit Ihrem Ziel Berechtigungsprobleme gibt und der DLQ richtig konfiguriert ist, werden Ihnen die fehlgeschlagenen Aufrufe im DLQ mit berechtigungsbezogenen Fehlermeldungen angezeigt.

    • Wenn der DLQ leer bleibt, obwohl fehlgeschlagene Ausführungen in den CloudWatch Metriken angezeigt werden, deutet dies wahrscheinlich auf ein Berechtigungsproblem hin, das den Scheduler daran hindert EventBridge , in den DLQ selbst zu schreiben.

    Anmerkung

    Stellen Sie sicher, dass der DLQ selbst über die richtigen Berechtigungen verfügt. Wenn es verschlüsselt ist, stellen Sie sicher, dass der EventBridge Scheduler die Erlaubnis hat, den KMS-Schlüssel zu verwenden.

  3. Überprüfen Sie die Vertrauensbeziehung

    • Stellen Sie sicher, dass Ihre IAM-Rolle die richtige Vertrauensbeziehung zu EventBridge Scheduler hat:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  4. Überprüfen Sie die Berechtigungen für die Rolle „Zeitplanausführung

    • Die Ausführungsrolle des Zeitplans benötigt spezifische Berechtigungen, um verschiedene Zieltypen aufrufen zu können.

    • Beispiele für Berechtigungen, die Sie in die Ausführungsrollenrichtlinie Ihres Zeitplans aufnehmen sollten:

    // For Lambda function targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }] } // For SQS queue targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:region:account-id:queue-name" }] }
  5. Suchen Sie nach verschlüsseltem Ressourcenzugriff

    • Wenn Ihr Ziel verschlüsselte Ressourcen verwendet (z. B. KMS-encrypted SQS-Warteschlangen), stellen Sie sicher, dass Ihre Rolle über die Berechtigungen zur Verwendung des KMS-Schlüssels verfügt:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
  6. Überprüfen Sie die ARN-Konfiguration der Rolle

    • Stellen Sie sicher, dass der Rollen-ARN in Ihrer Zeitplankonfiguration korrekt ist.

    • Stellen Sie sicher, dass die Rolle in derselben AWS-Konto Region wie Ihr Zeitplan existiert.

Servicekontingente verstehen und verwalten

Wenn Sie Probleme beim Erstellen von Zeitplänen haben oder gedrosselte Aufrufe sehen, haben Sie möglicherweise die Servicekontingentgrenzen erreicht. EventBridge Der Scheduler verfügt über Kontingente für die Anzahl der Zeitpläne, Zeitplangruppen und Aufrufraten, die je nach Region variieren können.

Identifizierung von Problemen mit der Quote

So stellst du fest, ob du die Quotenlimits überschritten hast:

  1. Überwachen Sie CloudWatch Kennzahlen

    • Überprüfen Sie die InvocationThrottleCount Metrik. Ein Anstieg dieser Metrik bedeutet, dass Sie Ihr Limit für die Aufrufrate überschreiten.

    • Überprüfe die InvocationAttemptCount Metrik, um deine aktuelle Nutzung zu verstehen.

  2. Achten Sie auf bestimmte Fehlermeldungen

    • Wenn Sie Zeitpläne erstellen oder ändern, LimitExceededException bedeutet a, dass Sie die maximale Anzahl von Zeitplänen oder Zeitplangruppen erreicht haben.

    • API-Aufrufe, die Drosselungsfehler zurückgeben, deuten darauf hin, dass Sie das API-Anforderungskontingent überschreiten.

Kontingentprobleme lösen

Wenn Sie feststellen, dass Sie die Kontingentgrenzen überschreiten:

  1. Überprüfe und optimiere deine aktuellen Zeitpläne. Erwägen Sie, ähnliche Zeitpläne zu konsolidieren oder ungenutzte zu entfernen.

  2. Implementieren Sie zur API-Drosselung in Ihren API-Aufrufen Wiederholungsversuche mit Backoff.

  3. Wenn Sie höhere Kontingente benötigen, fordern Sie eine Erhöhung über die Service Quota-Konsole an. Wählen Sie EventBridge Scheduler aus, wählen Sie das Kontingent aus, das Sie erhöhen möchten, und reichen Sie eine Anfrage mit Ihrer geschäftlichen Begründung ein.

Planen Sie das Muster und lösen Sie Zeitprobleme aus

Benutzer stoßen manchmal auf Probleme, bei denen Zeitpläne nicht zu den erwarteten Zeiten ausgelöst werden. Dies kann am häufigsten auf Missverständnisse in Bezug auf Zeitplanmuster, Änderungen der Sommerzeit oder flexible Zeitfenster zurückzuführen sein.

Häufige Ursachen

  • Fehlinterpretation von Cron-Ausdrücken.

  • Unerwartetes Verhalten bei Änderungen der Sommerzeit.

  • Verwirrung über flexible Zeitfenster.

  • Missverständnis von Ratenausdrücken.

Fehlerbehebungsschritte

  1. Überprüfen Sie Cron-Ausdrücke

    • Stellen Sie sicher, dass Ihr Cron-Ausdruck korrekt formatiert ist.

    • Beachten Sie, dass Sie in einem Cron-Ausdruck nicht gleichzeitig die Felder für den Monatstag und den Wochentag angeben können.

  2. Überlegungen zur Zeitzone

    • Wählen Sie bei der Erstellung des Zeitplans Ihre bevorzugte Zeitzone aus.

    • Machen Sie sich bewusst, wie sich die Sommerzeit auf Ihren Zeitplan auswirkt, da diese Anpassung auf UTC basiert.

    Beispiel für Auswirkungen der Sommerzeit: Wenn Sie einen Zeitplan so konfigurieren, dass er um 7:00 Uhr GMT ausgeführt wird:

    • Im Winter: Der Zeitplan läuft um 7:00 Uhr GMT (als GMT = UTC)

    • Im Sommer: Der Zeitplan läuft immer noch um 7:00 Uhr UTC, das ist jetzt 6:00 Uhr GMT/BST

    Wenn Sie möchten, dass der Zeitplan das ganze Jahr über zur gleichen Ortszeit läuft, achten Sie darauf, bei der Erstellung des Zeitplans die entsprechende Zeitzone auszuwählen und zu erfahren, wie sich die Sommerzeit auf diese Zeitzone auswirken kann.

  3. Machen Sie sich mit flexiblen Zeitfenstern vertraut

    • Flexible Zeitfenster ermöglichen es dem EventBridge Scheduler, Aufrufe zu optimieren.

    • Der Zeitplan wird möglicherweise nicht genau am Anfang des Fensters ausgelöst.

    • Überwachen Sie die tatsächlichen Aufrufzeiten, um das Verhalten zu verstehen.

  4. Überprüfen Sie die Rate- und Cron-Ausdrücke

    • Stellen Sie sicher, dass Ratenausdrücke korrekt formatiert sind (z. B.rate(5 minutes),rate(1 hour)).

    • Beachten Sie sowohl bei Rate- als auch bei Cron-Ausdrücken, dass Zeitplan-Aufrufe nicht auf die 0ste Sekunde einer Minute begrenzt sind.

    • Zeitpläne können innerhalb der angegebenen Minute ausgelöst werden, aber nicht unbedingt genau zu Beginn der Minute.

    Beispiel:

    • Ein Zeitplan mit rate(1 hour) könnte um 14:00:45 Uhr, 15:00:32 Uhr, 16:00:18 Uhr usw. laufen.

    • Ein für 0 * * * ? * (jede Stunde) festgelegter Cron-Zeitplan könnte um 14:00:15 Uhr, 15:00:07 Uhr, 16:00:52 Uhr usw. laufen.

  5. CloudWatch Überwachen Sie Messwerte

    • Verwenden Sie die InvocationAttemptCount Metrik, um zu überprüfen, ob Ihr Zeitplan auslöst.

    • Prüfen SieTargetErrorCount, ob Aufrufe fehlschlagen.

    • Wenn Sie eine Dead-Letter Warteschlange konfiguriert haben, überwachen Sie diese, um fehlgeschlagene InvocationsSentToDeadLetterCount Aufrufe zu verfolgen.

Erstellen von Zeitplanmustern und Cron-Ausdrücken

Benutzer stoßen häufig auf Probleme beim Erstellen von Zeitplanmustern, insbesondere bei Cron-Ausdrücken. Hier sind einige häufig auftretende Probleme und wie man sie löst:

Häufige Probleme

  • Falsche Cron-Syntax

  • Es wird versucht, nicht unterstützte Cron-Funktionen zu verwenden

  • Verwirrung darüber, welche Felder zusammen verwendet werden können

Fehlerbehebungsschritte

  1. Überprüfen Sie die Syntax von Cron-Ausdrücken

    • Stellen Sie sicher, dass Ihr Cron-Ausdruck dem richtigen Format folgt:. Minutes Hours Day-of-month Month Day-of-week Year

    • Denken Sie daran, dass EventBridge Scheduler den Cron-Standard mit einem zusätzlichen Jahresfeld verwendet.

  2. Verstehen Sie die Einschränkungen

  3. Verwenden Sie die Funktion zur Zeitplanvorschau

    • Beim Erstellen oder Bearbeiten eines Zeitplans bietet der EventBridge Scheduler eine Vorschau der nächsten 10 Ausführungszeiten.

    • Verwenden Sie diese Vorschau, um zu überprüfen, ob Ihr Zeitplan zu den vorgesehenen Zeiten ausgeführt wird.

    • Wenn die Vorschau nicht Ihren Erwartungen entspricht, überprüfen Sie Ihren Cron-Ausdruck und passen Sie ihn an.

Wird mein Ziel getriggert?

Um zu bestätigen, ob dein Ziel ausgelöst wird:

  1. Prüfe die CloudWatch Metriken:

    • InvocationAttemptCountzeigt die Anzahl der versuchten Aufrufe

    • TargetErrorCountgibt an, ob irgendwelche Aufrufe fehlgeschlagen sind

    • TargetErrorThrottledCountzeigt an, ob Ihr Ziel gedrosselt wird

    • InvocationDroppedCountzeigt an, ob irgendwelche Aufrufe verworfen wurden

  2. Konfigurieren Sie eine Dead-Letter Warteschlange (DLQ), um alle fehlgeschlagenen Aufrufe zu erfassen und zu analysieren.

Vordefinierte Ziele im Vergleich zu universellen Zielen

Wenn Sie eine Fehlermeldung wie „Ungültige Anfrage bereitgestellt: [Dienst] ist kein unterstützter Dienst für ein Ziel“ erhalten, versuchen Sie möglicherweise, einen Dienst, der nicht unterstützt wird, als Zielvorlage zu verwenden.

Um dieses Problem zu lösen:

  1. Prüfen Sie, ob Ihr gewünschter Dienst als Template-Target unterstützt wird.

  2. Wenn dies nicht unterstützt wird, verwenden Sie stattdessen ein universelles Ziel und konfigurieren Sie es so, dass der entsprechende API-Aufruf an Ihren Service gesendet wird.

Ungültige Eingabekonfigurationen für universelle Ziele

Wenn Sie einen Zeitplan mit einem universellen Ziel erstellen, validiert EventBridge Scheduler das ARN-Zielformat, aber nicht den Inhalt des Input Felds anhand der API des Downstream-Dienstes. Das bedeutet, dass ein Zeitplan auch dann erfolgreich erstellt werden kann, wenn er Werte Input enthält, die der Zieldienst beim Aufruf ablehnt.

Zeitpläne mit ungültigen Zieleingabekonfigurationen werden mit ihrem konfigurierten Ausdruck ausgelöst, schlagen jedoch bei jedem Aufruf fehl. Möglicherweise entdecken Sie die Fehlkonfiguration erst, wenn der Zeitplan aufgerufen wird, was Stunden oder Tage nach der Erstellung geschehen kann.

Symptome

  • Der Zeitplan wurde ohne Fehler erstellt, aber die TargetErrorCount CloudWatch Metrik erhöht sich bei jedem Aufruf.

  • DLQ-Meldungen enthalten Fehlercodes vom Zieldienst (z. B. InvalidParameterValueException oderValidationException), nicht. AWS.Scheduler.InternalServerError

  • Die ERROR_MESSAGE in der DLQ-Meldung enthaltenen Informationen verweisen auf bestimmte Fehler bei der Überprüfung der Eingabeparameter.

Beispiele

Die folgenden Beispiele zeigen häufig auftretende ungültige Eingabekonfigurationen für ein AWS Lambda universelles Ziel (arn:aws:scheduler:::aws-sdk:lambda:invoke).

Nicht übereinstimmende Qualifikatoren

Ein Zeitplan mit der folgenden Eingabe gibt die Version 2 im Feld FunctionName und die Version 1 im Qualifier Feld an:

{ "FunctionName": "MyFunction:2", "Qualifier": "1" }

Dieser Zeitplan wurde erfolgreich erstellt, aber jeder Aufruf schlägt fehl. Die DLQ-Nachricht enthält:

  • ERROR_CODE: InvalidParameterValueException

  • ERROR_MESSAGE: The derived qualifier from the function name does not match the specified qualifier.

Ungültiger Funktionsname

Ein Zeitplan mit der folgenden Eingabe gibt einen Wert an, der nur Leerzeichen enthält für: FunctionName

{ "FunctionName": " " }

Die DLQ-Nachricht enthält:

  • ERROR_CODE: ValidationException

  • ERROR_MESSAGE: Ein Überprüfungsfehler, der angibt, dass der Funktionsname nicht dem erforderlichen Muster entspricht.

Wie kann ich das Problem lösen

  1. Konfigurieren Sie einen DLQ. Konfigurieren Sie für Zeitpläne, die universelle Ziele verwenden, immer eine Warteschlange mit unzustellbaren Briefen. Die DLQ-Nachrichtenattribute (ERROR_CODEundERROR_MESSAGE) enthalten den spezifischen Fehler, der vom Zieldienst zurückgegeben wurde und der den ungültigen Eingabeparameter identifiziert.

  2. Überprüfen Sie die Eingabeparameter anhand der Zieldienst-API. Bevor Sie einen Zeitplan erstellen, überprüfen Sie, ob die JSON-Datei in Ihrem Input Feld gültige Werte enthält, indem Sie die Ziel-API direkt aufrufen. Rufen Sie beispielsweise mithilfe der AWS Lambda Invoke API Ihre AWS Lambda Funktion mit denselben Parametern auf, um zu bestätigen, dass die Anfrage erfolgreich ist.

  3. Testen Sie mit einem einmaligen Zeitplan. Erstellen Sie einen einmaligen Zeitplan, um zu überprüfen, ob der Zielaufruf erfolgreich ist, bevor Sie einen wiederkehrenden Zeitplan konfigurieren.

  4. Überprüfen Sie die API-Referenz für den Zieldienst. Überprüfen Sie die API-Referenz für den Service, auf den Sie abzielen, um die erforderlichen Parameter, gültigen Wertebereiche und Einschränkungen zu überprüfen. Weitere Informationen finden Sie unter Invoke im AWS Lambda Entwicklerhandbuch. AWS Lambda Invoke

Planen Sie Aktualisierungen, die unerwartete Aufrufe auslösen

Wenn Sie eine Änderung an einem Zeitplan vornehmen, entsprechen die Aufrufe möglicherweise nicht sofort dem aktualisierten Zeitplan. Warten Sie einen Augenblick, bis die Änderungen wirksam werden. Wenn Sie beispielsweise einen Zeitplan kurz vor der ursprünglichen Auslösezeit aktualisieren, wird möglicherweise ein Aufruf angezeigt, der auf der ursprünglichen Zeitplankonfiguration basiert.

Deaktivieren oder Aktivieren von Einmalzeitplänen

Wenn ein einmaliger Zeitplan nach Ablauf der ursprünglich geplanten Zeit erneut aktiviert wird, ruft der Zeitplan möglicherweise sofort sein Ziel auf. Dies kann auch dann der Fall sein, wenn der Zeitplan vor seiner ursprünglichen Ausführungszeit deaktiviert wurde.

Beispiel:

  • Aktuelle Zeit: 13:15 UTC

  • One-time Zeitplan erstellt für: 13:30 UTC

  • Der Zeitplan wurde vor 13:30 Uhr UTC deaktiviert

  • Der Zeitplan wurde um 14:00 Uhr UTC wieder aktiviert

  • Ergebnis: Das Ziel kann sofort nach der erneuten Aktivierung aufgerufen werden