Fehlerbehebung bei Amazon EventBridge Scheduler - EventBridge Terminplaner

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 Scheduler

Mithilfe der Themen in diesem Abschnitt können Sie häufig auftretende Probleme mit Amazon EventBridge Scheduler beheben.

Mein Zeitplan schlägt mit Zielfehlern fehl

Fehler beim Aufrufen von Zielen 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 (DLQ) ein

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

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

    • Um eine DLQ zu konfigurieren, fügen Sie sie 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 EventBridge Scheduler erlaubt, 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.

    • Überprüfen Sie, ob 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 die 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 zur Erstellung von Zeitplänen angeben.

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

Probleme mit den Berechtigungen für die Ausführung von Terminplanrollen

Probleme mit IAM-Rollenberechtigungen 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

  • Fehlende erforderliche Berechtigungen für den Zieldienst

  • Falsche Rollenkonfiguration im Zeitplan

  • Fehlende Vertrauensbeziehung mit dem 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. CloudWatch Kennzahlen überwachen

    • Checken Sie die TargetErrorCount Metrik ein CloudWatch.

  2. Verwenden Sie Dead-Letter Queue (DLQ), um Berechtigungsprobleme zu bestätigen

    • Konfigurieren Sie einen DLQ für Ihren Zeitplan.

    • Wenn bei Ihrem Ziel Berechtigungsprobleme bestehen und der DLQ ordnungsgemäß konfiguriert ist, werden Ihnen die fehlgeschlagenen Aufrufe in der DLQ mit berechtigungsbezogenen Fehlermeldungen angezeigt.

    • Wenn die DLQ leer bleibt, obwohl fehlgeschlagene Ausführungen in den CloudWatch Metriken angezeigt werden, deutet dies wahrscheinlich auf ein Berechtigungsproblem hin, das Scheduler daran hindert EventBridge , in die 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 berechtigt ist, 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 „Ausführung planen“

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

    • Beispielberechtigungen, die in die Richtlinie für die Ausführungsrolle Ihres Zeitplans aufgenommen werden 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-verschlüsselte SQS-Warteschlangen), stellen Sie sicher, dass Ihre Rolle berechtigt ist, den KMS-Schlüssel zu verwenden:

    { "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.

Servicekontingenten verstehen und verwalten

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

Identifizierung von Kontingentproblemen

So stellen Sie fest, ob Sie die Kontingentgrenzen erreichen:

  1. Überwachen Sie die CloudWatch Kennzahlen

    • Überprüfen Sie die InvocationThrottleCount Metrik. Eine Erhöhung dieser Metrik bedeutet, dass Sie Ihr Limit für die Aufrufrate überschritten haben.

    • Überprüfen Sie die InvocationAttemptCount Metrik, um Ihre aktuelle Nutzung zu verstehen.

  2. Achten Sie auf spezifische Fehlermeldungen

    • Beim Erstellen oder Ändern von Zeitplänen 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 überschritten haben.

Probleme mit dem Kontingent lösen

Wenn Sie feststellen, dass Sie die Kontingentgrenzen erreicht haben:

  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 Wiederholungsversuche mit Backoff in Ihren API-Aufrufen.

  3. Wenn Sie höhere Kontingente benötigen, fordern Sie eine Erhöhung über die Service Quotas Quotas-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.

Probleme beim Planen, Muster und Auslösen des Timings

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 Preisausdrücken.

Fehlerbehebungsschritte

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

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

    • Beachten Sie, dass Sie in einem Cron-Ausdruck nicht day-of-month sowohl als auch day-of-week Felder gleichzeitig angeben können.

  2. Überlegungen zur Zeitzone

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

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

    Beispiel für die 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 Flugplan läuft immer noch um 7:00 Uhr UTC, was jetzt 6:00 Uhr GMT/BST ist

    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 die Cron-Ausdrücke

    • Stellen Sie sicher, dass die Preisausdrü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 0te Sekunde einer Minute beschränkt sind.

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

    Beispiel:

    • Ein Zeitplan, der rate(1 hour) möglicherweise um 14:00:45 Uhr, 15:00:32 Uhr, 16:00:18 Uhr usw. läuft.

    • 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. ausgeführt werden.

  5. Metriken überwachen CloudWatch

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

    • Prüfen SieTargetErrorCount, ob Aufrufe fehlschlagen.

    • Wenn Sie eine Warteschlange für InvocationsSentToDeadLetterCount unzustellbare Briefe konfiguriert haben, überwachen Sie diese, um fehlgeschlagene Aufrufe nachzuverfolgen.

Erstellen von Zeitplanmustern und Cron-Ausdrücken

Benutzer stoßen beim Erstellen von Zeitplanmustern häufig auf Probleme, 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 der Cron-Ausdrücke

    • 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

    • Sie können die day-of-week Felder day-of-month und nicht gleichzeitig angeben, wie hier beschrieben.

    • Cron-Ausdrücke, die zu schnelleren Häufigkeiten als mit 1 Minute führen, werden nicht unterstützt.

  3. Verwenden Sie die Funktion zur Vorschau des Zeitplans

    • 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 ausgelöst?

Um zu überprüfen, ob dein Ziel ausgelöst wird:

  1. Überprüfen Sie die CloudWatch Metriken:

    • InvocationAttemptCountzeigt die Anzahl der versuchten Aufrufe an

    • TargetErrorCountgibt an, ob irgendwelche Aufrufe fehlgeschlagen sind

    • TargetErrorThrottledCountzeigt an, ob Ihr Ziel gedrosselt wird

    • InvocationDroppedCountgibt an, ob Aufrufe verworfen wurden

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

Vorlagen im Vergleich zu universellen Zielen

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

Um dieses Problem zu lösen:

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

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

Planen Sie Aktualisierungen, die unerwartete Aufrufe auslösen

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

Einmalige Zeitpläne deaktivieren oder aktivieren

Wenn ein einmaliger Zeitplan nach Ablauf der ursprünglich geplanten Zeit wieder 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 Uhrzeit: 13:15 UTC

  • Einmaliger 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