Es gibt Aufgaben, die niemand anstößt: Sie passieren jede Nacht. Temporäre Dateien löschen, die Tageszusammenfassung verschicken, prüfen, ob eine Website antwortet, ein Backup machen. Auf einem klassischen Server benutzte man dafür den cron; in AWS ist, wenn die Aufgabe ein kleines Programm ist, der saubere Weg eine Lambda-Funktion (der Code) plus ein Zeitplaner (der Wecker), der sie zur angegebenen Uhrzeit aufruft. Der Zeitplaner heißt EventBridge Scheduler und ist für ein paar Ausführungen am Tag praktisch kostenlos. Diese Anleitung verbindet die beiden.
Bevor Sie anfangen: was die Begriffe bedeuten
- Lambda-Funktion
- Ein Stück Code von Ihnen, das bei Amazon gespeichert ist und ausgeführt wird, wenn etwas es aufruft. Sie zahlen pro Ausführung, nicht dafür, dass etwas eingeschaltet ist.
- EventBridge Scheduler
- Der Wecker von AWS: Er führt eine Aktion aus (zum Beispiel Ihre Funktion aufrufen) zu den Zeiten, die Sie planen.
- Zeitplan
- Jede „Alarmzeit“ des Weckers: wann und wen aufrufen.
- Cron-Ausdruck
- Die klassische Art, wiederkehrende Zeitpläne mit Zahlen zu schreiben: Minute, Stunde, Tag des Monats, Monat, Wochentag. Die Anleitung liefert Ihnen die fertigen Ausdrücke.
- Zeitzone
- Scheduler lässt Sie Ihre eigene wählen (Europe/Madrid), sodass 3:00 Uhr auch mit der Zeitumstellung 3:00 Uhr bleibt.
- Ausführungsrolle
- Die Berechtigung, die der Wecker braucht, um Ihre Funktion aufzurufen. Scheduler legt sie selbst an, wenn Sie ihn darum bitten.
- CloudWatch Logs
- Wo die Funktion bei jeder Ausführung ihr Tagebuch schreibt. So prüfen Sie, ob sie funktioniert hat.
Schritt für Schritt
Bereiten Sie die Funktion darauf vor, ohne jemanden davor zu laufen
Öffnen Sie die Funktion in der Lambda-Konsole und testen Sie sie über die Schaltfläche Testen mit einem leeren Ereignis (
{}): Sie muss ohne Fehler enden. Wenn sie Daten braucht (ein Passwort, eine Adresse), legen Sie diese in den Umgebungsvariablen der Funktion ab (Konfiguration), nicht im Code. Und prüfen Sie das Timeout (Allgemeine Konfiguration): Wenn die Aufgabe zwei Minuten dauert und das Limit drei Sekunden ist, schlägt sie jede Nacht fehl.Öffnen Sie den Zeitplaner
Suchen Sie Amazon EventBridge in der Konsole und im Menü links Scheduler, Zeitpläne, Zeitplan erstellen. Name:
limpieza-nocturna. Gruppe: die Standardgruppe.Sagen Sie, wann
Muster: Wiederkehrender Zeitplan, Typ Cron-basierter Zeitplan. Für jede Nacht um 3:00 Uhr:
cron(0 3 * * ? *)Für 8:00 Uhr von Montag bis Freitag:
cron(0 8 ? * MON-FRI *). Für den 1. jedes Monats um 7:00 Uhr:cron(0 7 1 * ? *). Darunter, Zeitzone: wählen Sie Ihre (Europe/Madrid). Die Seite zeigt Ihnen die nächsten zehn Ausführungen, damit Sie prüfen können, ob es die erwarteten sind. Flexibles Zeitfenster: Aus, wenn Sie die genaue Uhrzeit wollen.Sagen Sie, wen aufrufen
Ziel: Zielvorlagen, AWS Lambda - Invoke. Wählen Sie Ihre Funktion in der Auswahlliste. Unter Nutzlast (Payload) können Sie
{}stehen lassen oder Daten übergeben, die die Funktion aus dem Ereignis liest, zum Beispiel{"modo": "nocturno"}: So kann dieselbe Funktion je nach Aufrufer unterschiedliche Dinge tun.Berechtigungen und Wiederholungen
Lassen Sie unter Einstellungen Neue Rolle für diesen Zeitplan erstellen stehen: Scheduler gibt ihr genau die Berechtigung, diese Funktion aufzurufen. Bei der Wiederholungsrichtlinie sind 2 oder 3 Wiederholungen in Ordnung für eine Aufgabe, bei der es nichts ausmacht, sie zu wiederholen; bei einer, die E-Mails verschickt, setzen Sie 0, um nicht doppelt zu senden. Lassen Sie die Aktion nach Abschluss auf KEINE (der wiederkehrende Zeitplan wird nicht gelöscht). Weiter, überprüfen und Zeitplan erstellen.
Prüfen Sie die erste Ausführung
Am nächsten Tag (oder legen Sie eine Testausführung in fünf Minuten an und ändern sie danach) öffnen Sie die Funktion, Reiter Überwachen: Das Diagramm der Aufrufe muss einen zur geplanten Uhrzeit zeigen, und CloudWatch-Protokolle anzeigen zeigt, was sie geschrieben hat. Wenn nichts da ist, sehen Sie sich den Zeitplan in Scheduler an: Sein Status muss „Aktiviert“ sein, und der Reiter mit den Details zeigt die letzte Ausführung und ob sie fehlgeschlagen ist.
Was schiefgehen kann
Sie ist nicht zur eingestellten Uhrzeit gelaufen
Sie haben die Zeitzone auf UTC gelassen: Im Winter ist das eine Stunde weniger als in Spanien, im Sommer zwei. Bearbeiten Sie den Zeitplan und wählen Sie Europe/Madrid. Oder der Cron-Ausdruck hat die Felder vertauscht: In AWS ist die Reihenfolge Minute, Stunde, Tag des Monats, Monat, Wochentag, Jahr, und eines der beiden „Tag“-Felder muss ? sein.
Sie läuft, aber die Funktion schlägt fehl
Das Problem ist die Funktion, nicht der Wecker. Sehen Sie in die CloudWatch-Protokolle: Die Ausnahme steht dort. Üblich: Ihr fehlt eine Berechtigung für das, was sie tut (ihre eigene Ausführungsrolle), oder das Timeout läuft ab.
Sie läuft zweimal
Wiederholungen: Die erste Ausführung ist fehlgeschlagen oder hat zu lange gedauert, und Scheduler hat es erneut versucht. Senken Sie die Wiederholungen auf 0, wenn Wiederholen ein Problem ist, und sorgen Sie dafür, dass die Funktion nicht länger braucht als ihr Limit.
Ich möchte die Aufgabe ein paar Tage anhalten
Wählen Sie in Scheduler den Zeitplan und Deaktivieren. Er bleibt gespeichert; Sie aktivieren ihn wieder, wann Sie wollen. Löschen ist nicht nötig.
In Simplio
In Simplio zeigt jede Lambda-Funktion ihre letzte Ausführung, ob sie gut ging und was sie geschrieben hat, und sie zu planen heißt, „jeden Tag“, „jede Woche“ oder „jeden Monat“ und eine Uhrzeit in Ihrer Zeitzone zu wählen: Simplio legt den Zeitplan und die Berechtigung an. Wenn eine Ausführung fehlschlägt, benachrichtigt es Sie per E-Mail. Und Sie können sie mit einer Schaltfläche sofort ausführen und die Antwort sehen, ohne die Seite zu verlassen.
Dasselbe, in AWS und in Simplio
| In der AWS-Konsole | In Simplio | |
|---|---|---|
| Die Funktion planen | EventBridge Scheduler: Cron-Ausdruck, Zeitzone, Ziel, Rolle, Wiederholungen: 6 Schritte | An der Funktion: „jeden Tag um 3:00“ in einer Auswahlliste und eine Uhrzeit, in Ihrer Zeitzone |
| Wissen, ob sie gelaufen ist | Diagramm unter Überwachen und CloudWatch-Protokolle | Letzte Ausführung, Ergebnis und Protokolle in der Karte der Funktion; E-Mail-Benachrichtigung, wenn sie fehlschlägt |
| Sie von Hand testen | Schaltfläche Testen in Lambda mit einem JSON-Ereignis | Schaltfläche Jetzt ausführen, mit Antwort und Protokollen auf derselben Seite |