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.

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

    • Vergewissern Sie sich, 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. Im Folgenden finden Sie einige häufig auftretende Probleme und wie Sie sie lösen können:

Häufige Probleme

  • Falsche Cron-Syntax

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

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

    • 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 dies nicht unterstützt wird, verwenden Sie stattdessen ein universelles Ziel und konfigurieren Sie es so, dass der entsprechende API-Aufruf an Ihren Service erfolgt.

Ungültige Eingabekonfigurationen für universelle Ziele

Wenn Sie einen Zeitplan mit einem universellen Ziel erstellen, validiert EventBridge Scheduler das ARN-Zielformat, validiert jedoch 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 zurückweist.

Zeitpläne mit ungültigen Zieleingabekonfigurationen werden bei 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 nimmt bei jedem Aufruf zu.

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

  • Die ERROR_MESSAGE DLQ-Meldung verweist auf bestimmte Fehler bei der Validierung von Eingabeparametern.

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 Qualifizierer

Ein Zeitplan mit der folgenden Eingabe gibt Version 2 im Feld FunctionName und Version 1 im Feld anQualifier:

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

Dieser Zeitplan wurde erfolgreich erstellt, aber jeder Aufruf schlägt fehl. Die DLQ-Meldung 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-Meldung enthält:

  • ERROR_CODE: ValidationException

  • ERROR_MESSAGE: Ein Validierungsfehler, der darauf hinweist, dass der Funktionsname nicht dem erforderlichen Muster entspricht.

Wie löst man

  1. Konfigurieren Sie einen DLQ. Konfigurieren Sie für Zeitpläne, die universelle Ziele verwenden, immer eine Warteschlange mit unerlaubten Nachrichten. 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. Stellen Sie vor dem Erstellen eines Zeitplans sicher, dass 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. Lesen 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, 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