Zeitgesteuerte Prozesse gehören zu den häufigsten Anforderungen in modernen Anwendungen – sei es zum täglichen Versenden von Berichten, zum nächtlichen Datenabgleich oder zur periodischen Bereinigung von Dateien. In Azure Functions lässt sich dies elegant über den TimerTrigger realisieren – auf Basis von Cron-Ausdrücken.
In diesem Beitrag erfährst du:
- Wie Cron-Ausdrücke in Azure Functions funktionieren
- Welche Besonderheiten im Vergleich zu klassischen Unix-Cronjobs gelten
- Wie man wiederkehrende Zeitpläne richtig berechnet
- Und wie du eine Azure Function per TimerTrigger zeitgesteuert ausführst
🔁 Was ist ein Cronjob?
Ein Cronjob ist ein wiederkehrender, geplanter Task. In Linux-Systemen erfolgt die Steuerung über den sogenannten Cron-Daemon, der Jobs zu vordefinierten Zeiten ausführt – gesteuert über einen sogenannten Cron-Ausdruck.
Auch Azure Functions unterstützen solche geplanten Aufgaben – allerdings über die serverlose TimerTrigger-Bindung, die nach dem Cron-Prinzip funktioniert.
📌 Unterschiede zwischen klassischem Cron und Azure Functions
Merkmal | Klassischer Cron | Azure Functions TimerTrigger |
Anzahl Felder | 5 (Minute bis Wochentag) | 6 (Sekunde bis Wochentag) |
Zeitzone | Systemzeit | Standardmäßig UTC |
Umgebung | Unix/Linux | Serverless Cloud (Azure) |
Syntax-Empfehlung | * * * * * | 0 */5 * * * * |
🧠 Aufbau eines Cron-Ausdrucks in Azure Functions
In Azure Functions wird ein Cron-Ausdruck immer in sechs Felder unterteilt:
{Sekunde} {Minute} {Stunde} {Tag} {Monat} {Wochentag}
XMLBeispiel:
[TimerTrigger("0 30 3 * * *")]
C#Diese Funktion wird täglich um 3:30:00 Uhr (UTC) ausgeführt.
📚 Bedeutung der Felder
Feld | Wertebereich | Beschreibung |
Sekunde | 0-59 | Wann innerhalb der Minute starten |
Minute | 0-59 | Minute der Stunde |
Stunde | 0-23 | Stunde des Tages |
Tag | 1-31 | Tag des Monats |
Monat | 1-12 | Monat |
Wochentag | 0-6 | Wochentag (So=0, … Sa=6) |
⏲️ TimerTrigger in einer Azure Function verwenden
Hier ein vollständiges Beispiel für eine Azure Function in C# mit TimerTrigger
:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace TimeTriggerTestAzureFunction;
public class MyTimeTriggerFunction
{
private readonly ILogger _logger;
public MyTimeTriggerFunction(
ILoggerFactory loggerFactory)
{
_logger
= loggerFactory
.CreateLogger<MyTimeTriggerFunction>();
}
[Function("MyTimeTriggerFunction1")]
public void Run(
[TimerTrigger("0 0 6 * * 1")] TimerInfo myTimer)
{
_logger
.LogInformation(
$"C# Timer trigger function executed at: " +
$"{DateTime.Now}");
if (myTimer.ScheduleStatus is not null)
{
_logger
.LogInformation(
$"Next timer schedule at: " +
$"{myTimer.ScheduleStatus.Next}");
}
}
}
C#🔍 Erklärung:
"0 0 6 * * 1"
= jeden Montag um 6:00:00 Uhr UTCTimerInfo
liefert nützliche Infos wie die nächste geplante Ausführung
🧮 Beispiele für Cron-Ausdrücke
Beschreibung | Cron-Ausdruck |
Alle 5 Minuten | 0 */5 * * * * |
Jeden Tag um 12:30 Uhr (UTC) | 0 30 12 * * * |
Jeden Sonntag um 23:45 Uhr | 0 45 23 * * 0 |
Jeden Werktag um 6:00 Uhr | 0 0 6 * * 1-5 |
Jeden Monat am 1. um Mitternacht | 0 0 0 1 * * |
📌 Hinweis: Alle Zeiten sind in UTC angegeben! Wenn du mit lokalen Zeitzonen arbeiten möchtest, siehe unten.
🌍 Zeitzone anpassen (z. B. auf Europa/Berlin)
Standardmäßig verwendet Azure Functions die UTC-Zeitzone. Um eine andere Zeitzone zu nutzen, kannst du die App-Einstellung setzen:
WEBSITE_TIME_ZONE = Europe/Berlin
XML🛠️ Tipps & Best Practices
✅ Teste deine Cron-Ausdrücke mit Tools wie: crontab.guru
📌 Kommentiere Cron-Ausdrücke in deinem Code oder deiner Doku
⏱️ Beachte, dass der TimerTrigger nicht sofort bei Deployment oder Scale-Out startet – plane Initialzeit ggf. ein.
🚫 Wenn eine Ausführung fehlschlägt, gibt es keinen automatischen Retry! Plane Logging oder Monitoring ein.
📦 Fazit
Cron-Ausdrücke ermöglichen eine elegante Steuerung wiederkehrender Aufgaben. In Azure Functions gelingt das durch den TimerTrigger – mit nur wenigen Zeilen Code kannst du deine Funktionen täglich, wöchentlich oder im Minutentakt ausführen lassen.
Wenn du die sechs Felder richtig interpretierst, auf die UTC-Zeit achtest und die nötige App-Einstellung für die Zeitzone setzt, hast du ein mächtiges Werkzeug zur Hand – ohne eigene Infrastruktur.