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
-
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": "*" } -
Ü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.
-
Ü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 } } -
Überprüfen Sie die zielspezifischen Konfigurationen
Stellen Sie bei Zielen mit Vorlagen (wie ECS-Aufgaben) sicher, dass Sie Überschreibungen über den
Target.InputParameter 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
TargetErrorCountMetrik in CloudWatchZeitpläne können ohne offensichtliche Probleme in der Zeitplankonfiguration nicht ausgeführt werden
Fehlerbehebungsschritte
-
Überwachen Sie CloudWatch Messwerte
Checken Sie die
TargetErrorCountMetrik ein CloudWatch.
-
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.
-
Ü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" }] } -
Ü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" }] } -
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" } ] } -
Ü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:
-
Überwachen Sie CloudWatch Kennzahlen
Überprüfen Sie die
InvocationThrottleCountMetrik. Ein Anstieg dieser Metrik bedeutet, dass Sie Ihr Limit für die Aufrufrate überschreiten.Überprüfe die
InvocationAttemptCountMetrik, um deine aktuelle Nutzung zu verstehen.
-
Achten Sie auf bestimmte Fehlermeldungen
Wenn Sie Zeitpläne erstellen oder ändern,
LimitExceededExceptionbedeutet 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:
Überprüfe und optimiere deine aktuellen Zeitpläne. Erwägen Sie, ähnliche Zeitpläne zu konsolidieren oder ungenutzte zu entfernen.
Implementieren Sie zur API-Drosselung in Ihren API-Aufrufen Wiederholungsversuche mit Backoff.
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
-
Ü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.
-
Ü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.
-
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.
-
Ü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.
-
CloudWatch Überwachen Sie Messwerte
Verwenden Sie die
InvocationAttemptCountMetrik, um zu überprüfen, ob Ihr Zeitplan auslöst.Prüfen Sie
TargetErrorCount, ob Aufrufe fehlschlagen.Wenn Sie eine Dead-Letter Warteschlange konfiguriert haben, überwachen Sie diese, um fehlgeschlagene
InvocationsSentToDeadLetterCountAufrufe 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
-
Ü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 YearDenken Sie daran, dass EventBridge Scheduler den Cron-Standard mit einem zusätzlichen Jahresfeld verwendet.
-
Verstehen Sie die Einschränkungen
Sie können nicht gleichzeitig die Felder „Tag des Monats“ und „Wochentag“ angeben, wie hier beschrieben. https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-scheduled-rule-pattern.html#eb-cron-expressions
Cron-Ausdrücke, die zu schnelleren Häufigkeiten als mit 1 Minute führen, werden nicht unterstützt.
-
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:
-
Prüfe die CloudWatch Metriken:
InvocationAttemptCountzeigt die Anzahl der versuchten AufrufeTargetErrorCountgibt an, ob irgendwelche Aufrufe fehlgeschlagen sindTargetErrorThrottledCountzeigt an, ob Ihr Ziel gedrosselt wirdInvocationDroppedCountzeigt an, ob irgendwelche Aufrufe verworfen wurden
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:
Prüfen Sie, ob Ihr gewünschter Dienst als Template-Target unterstützt wird.
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
TargetErrorCountCloudWatch Metrik erhöht sich bei jedem Aufruf.DLQ-Meldungen enthalten Fehlercodes vom Zieldienst (z. B.
InvalidParameterValueExceptionoderValidationException), nicht.AWS.Scheduler.InternalServerErrorDie
ERROR_MESSAGEin 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:InvalidParameterValueExceptionERROR_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:ValidationExceptionERROR_MESSAGE: Ein Überprüfungsfehler, der angibt, dass der Funktionsname nicht dem erforderlichen Muster entspricht.
Wie kann ich das Problem lösen
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.Überprüfen Sie die Eingabeparameter anhand der Zieldienst-API. Bevor Sie einen Zeitplan erstellen, überprüfen Sie, ob die JSON-Datei in Ihrem
InputFeld gültige Werte enthält, indem Sie die Ziel-API direkt aufrufen. Rufen Sie beispielsweise mithilfe der AWS LambdaInvokeAPI Ihre AWS Lambda Funktion mit denselben Parametern auf, um zu bestätigen, dass die Anfrage erfolgreich ist.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.
Ü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