Cronjobs erstellen und konfigurieren

Mit Cloud Scheduler können Sie geplante Arbeitseinheiten, sogenannte Cronjobs, einrichten, die an Zielenach einem bestimmten Zeitplanoder Häufigkeit gesendet werden.

Es darf immer nur eine Instanz eines Jobs ausgeführt werden. In seltenen Fällen können mehrere Instanzen desselben Jobs angefordert werden. Deshalb sollte dein Anfrage-Handler idempotent sein. Dein Code sollte sicherstellen, dass in diesem Fall keine schädlichen Nebenwirkungen auftreten.

Cloud Scheduler ist für wiederholte Jobs vorgesehen. Wenn Sie einen Job nur einmal ausführen möchten, sollten Sie Cloud Tasks verwenden. Damit kann eine Aufgabe bis zu 30 Tage im Voraus geplant werden.

Hinweis

Prüfen Sie, ob Sie Ihre Umgebung für Cloud Scheduler eingerichtet haben.

Job erstellen

Sie können den Job entweder mit der Google Cloud Console oder mit der Google Cloud CLI erstellen.

Console

  1. Rufen Sie in der Konsole Cloud Scheduler auf.

    Zu Cloud Scheduler

  2. Klicken Sie auf Job erstellen.

  3. Geben Sie im Feld Name einen eindeutigen Namen für den Job ein.

    Nachdem Sie den zugehörigen Job gelöscht haben, können Sie einen Jobnamen in einem Projekt wiederverwenden.

  4. Wählen Sie in der Liste Region eine Region aus.

    Wenn Sie ein App Engine-HTTP-Ziel verwenden, müssen Sie dieselbe Region wie für Ihre App Engine-Anwendung auswählen. Weitere Informationen finden Sie unter Unterstützte Regionen nach Ziel.

  5. Geben Sie optional eine kurze Beschreibung des Jobs an, in der z. B. der Zweck des Jobs als Erinnerungshilfe genannt ist.

    Diese Beschreibung wird in der Konsole neben dem Jobnamen angezeigt.

  6. Geben Sie mithilfe eines Konfigurationsstrings die Häufigkeit an, mit der der Job ausgeführt werden soll.

    Beispiel: Mit dem String 0 1 * * 0 wird der Job einmal wöchentlich um 1:00 Uhr morgens ausgeführt. Der hier angegebene String kann ein beliebiger mit unix-cron kompatibler String sein. Weitere Informationen finden Sie unter Zeitpläne für Cronjobs konfigurieren.

  7. Wählen Sie in der Liste Zeitzone die Zeitzone aus, die für den Jobzeitplan verwendet werden soll.

  8. Klicken Sie auf Weiter.

  9. Geben Sie den Zieltyp an:

  10. Klicken Sie auf Weiter.

  11. Optional: Klicken Sie zum Konfigurieren des Wiederholungsverhaltens auf Optionale Einstellungen konfigurieren. Zur Angabe der Dauer verwenden Sie eine Sequenz von nicht negativen Ganzzahlen mit den folgenden Einheitensuffixen:

    • h: Stunde
    • m: Minute
    • s: Sekunde
    • ms – Millisekunde
    • us – Mikrosekunde
    • ns – Nanosekunde

    Negative Werte und Bruchwerte sind nicht zulässig. Das Feld Max retry duration unterstützt nur die Werte h, m und s. Sowohl Min backoff duration als auch Max backoff duration unterstützen das vollständige Set.

  12. Optional können Sie für HTTP- und App Engine-HTTP-Ziele eine Frist für Jobversuche konfigurieren. Wenn der Anfrage-Handler nicht innerhalb dieses Zeitlimits antwortet, wird die Anfrage abgebrochen und der Versuch als fehlgeschlagen markiert. Cloud Scheduler wiederholt den Job gemäß der Wiederholungskonfiguration.

  13. Zum Erstellen und Speichern des Jobs klicken Sie auf Erstellen.

    Der Job wird jetzt mit der festgelegten Häufigkeit ausgeführt.

gcloud

Wenn Sie einen Job mit der gcloud-Befehlszeile erstellen, verwenden Sie für jeden Zieltyp unterschiedliche Befehle. Klicken Sie bei Beispielbefehlen auf ein Ziel:

Pub/Sub-Ziel

Wenn Sie den Zieltyp Pub/Sub auswählen:

  1. Geben Sie den Namen des Themas an, zu dem der Job veröffentlicht wird. Dies ist ein Pub/Sub-Thema, das Sie in Ihrem Projekt bereits eingerichtet haben.

  2. Geben Sie eine Nachricht an, die an das Thema gesendet werden soll. Wird als data-Parameter in der Pub/Sub-Nachricht gesendet. Ein Beispiel dafür finden Sie in der Kurzanleitung.

  3. Fügen Sie alle erforderlichen Nachrichtenattribute hinzu.

  4. Richten Sie zusätzliche Konfigurationen über den Abschnitt Configure optional settings ein.

Cloud Scheduler veröffentlicht Nachrichten zu diesem Thema als Google APIs-Dienstkonto.

App Engine-HTTP-Ziel

Wenn Sie den Zieltyp App Engine HTTP auswählen, müssen Sie die App Engine-Anwendung und die Region verwenden, die mit dem aktuellen Projekt verknüpft ist. Wenn Sie eine andere App Engine-Anwendung außerhalb Ihres aktuellen Projekts verwenden möchten, wählen Sie HTTP als Ziel und nicht App Engine-HTTP aus.

Legen Sie das Format so fest:

  1. Wählen Sie aus der Liste Target type (Zieltyp) die Option App Engine HTTP aus.

  2. Geben Sie den Namen des App Engine-Dienstes an, der den Handler für den Cloud Scheduler-Job ausführt. Wird kein Wert angegeben, wird der Dienst default angenommen. Sie können die Dienstnamen in der Konsole einsehen.

  3. Geben Sie optional die Version an. Wenn Sie keine Version angeben, wird die aktuelle Version verwendet. Die verfügbaren Versionen finden Sie in der Console.

  4. Geben Sie optional die Instanz an. Wenn die Richtlinie nicht konfiguriert ist, kann jede verfügbare Instanz verwendet werden. Die verfügbaren Versionen finden Sie in der Console.

  5. Geben Sie die relative URL des App Engine-Endpunkts an, den der Job kontaktiert. Wenn Sie den Standardwert / verwenden, verwendet der Job PROJECT-ID.appspot.com, wobei PROJECT-ID Ihre aktuelle Projekt-ID ist.

  6. Legen Sie die HTTP-Methode fest, die bei Ausführung des Jobs verwendet werden soll. Die Standardeinstellung ist POST.

  7. Fügen Sie der Anfrage alle erforderlichen Header hinzu.

  8. Optional können Sie die Textdaten angeben, die an das Ziel gesendet werden sollen. Diese Daten werden im Text der Anfrage als Bytes gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt ist.

Ziel-App Engine-Endpunkte müssen sich im selben Projekt befinden und mit login: admin im Element handlers in der Datei app.yaml gesichert sein.

HTTP-Ziel

Wenn Sie den Zieltyp HTTP auswählen:

  1. Geben Sie die vollständig qualifizierte URL des Endpunkts an, an den sich der Job richtet.

  2. Geben Sie die HTTP-Methode an. Die Standardeinstellung ist POST.

  3. Geben Sie optional die Daten an, die an das Ziel gesendet werden sollen. Diese Daten werden im Text der Anfrage als Bytes gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt ist.

  4. Fügen Sie die gewünschten Header hinzu.

  5. Informationen zum Erstellen eines HTTP-Zieljobs, der eine Authentifizierung erfordert, finden Sie unter Authentifizierung mit HTTP-Zielen verwenden.

Auf ein Ziel ausgerichtete HTTP-Endpunkte müssen öffentlich zugänglich sein.

Pub/Sub-Ziel

Verwenden Sie ein Pub/Sub-Thema, das in Ihrem Projekt bereits eingerichtet ist. Cloud Scheduler veröffentlicht Nachrichten zu diesem Thema mit einem Google APIs-Dienstkonto.

Syntax

gcloud scheduler jobs create pubsub JOB --location=LOCATION --schedule=SCHEDULE --topic=TOPIC (--message-body=MESSAGE_BODY | --message-body-from-file=MESSAGE_BODY_FROM_FILE) [optional flags]

So verwenden Sie das Pub/Sub-Ziel in der Befehlszeile:

  1. Geben Sie einen Namen für JOB ein. Er muss im Projekt eindeutig sein. Sie können Jobnamen in einem Projekt nicht wiederverwenden, auch wenn Sie den zugehörigen Job gelöscht haben.

  2. Geben Sie den Standort an. Falls nicht angegeben, wird der Standort der aktuellen App Engine-Anwendung des Projekts, sofern vorhanden, verwendet.

  3. Geben Sie an, mit welchem Zeitplan (auch Häufigkeit oder Jobintervall genannt) der Job ausgeführt werden soll. Beispiel: "alle 3 Stunden". Der hier angegebene String kann ein beliebiger Unix-Cron-kompatibler String sein. Sie können auch die alte Cron-Syntax von App Engine verwenden, um den Zeitplan zu beschreiben.

Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

  1. Geben Sie den Namen des Themas an, zu dem der Job veröffentlicht wird.

  2. Geben Sie eine Nachricht an, die an das Thema gesendet werden soll. Sie wird in der Pub/Sub-Nachricht als Parameter data gesendet. Ein Beispiel dafür finden Sie im Schnellstart.

  3. Es stehen weitere optionale Parameter zur Verfügung: z. B. Zeitzone, Attribute, Wiederholungsversuche und andere in der gcloud-Befehlszeilenreferenz beschriebene Parameter.

Befehlszeile als Beispiel:

    gcloud scheduler jobs create pubsub myjob --schedule "0 1 * * 0" --topic cron-topic --message-body "Hello"

App Engine-HTTP-Ziel

Das Ziel App Engine HTTP ist nur für die App Engine-Anwendung verfügbar, die dem aktuellen Projekt zugeordnet ist. Wenn Sie eine andere App Engine-Anwendung außerhalb Ihres aktuellen Projekts verwenden möchten, wählen Sie HTTP als Ziel und nicht App Engine HTTP.

App Engine-Endpunkte können mit login: admin für das Element handlers in der Datei app.yaml gesichert werden.

Syntax

gcloud scheduler jobs create app-engine JOB --location=LOCATION --schedule=SCHEDULE [optional flags]

Zur Nutzung von App Engine HTTP target:

  1. Geben Sie einen Namen für JOB ein. Er muss im Projekt eindeutig sein. Sie können Jobnamen in einem Projekt nicht wiederverwenden, auch wenn Sie den zugehörigen Job gelöscht haben.

  2. Geben Sie den Standort an. Dies muss der Standort Ihrer App Engine-Anwendung sein.

  3. Geben Sie an, mit welchem Zeitplan (auch Häufigkeit oder Jobintervall genannt) der Job ausgeführt werden soll. Beispiel: "alle 3 Stunden". Der hier angegebene String kann ein beliebiger Unix-Cron-kompatibler String sein. Sie können auch die alte Cron-Syntax von App Engine verwenden, um den Zeitplan zu beschreiben.

Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

  1. Geben Sie die relative URL des App Engine-Endpunkts an, an den sich der Job richtet. Wenn Sie den Standardwert / verwenden, verwendet der Job PROJECT-ID.appspot.com, wobei PROJECT-ID Ihre aktuelle Projekt-ID ist.

  2. Geben Sie den Namen des App Engine-Dienstes an, der den Handler für den Cloud Scheduler-Job ausführt. Ist kein Name angegeben, wird der Dienst default verwendet. Sie können die Dienstnamen in der Google Cloud Console einsehen.

  3. Legen Sie optional die HTTP-Methode fest, die bei Ausführung des Jobs verwendet werden soll. Die Standardeinstellung ist POST.

  4. Geben Sie optional die Version an. Wenn Sie keine Version angeben, wird die aktuelle Version verwendet. Die verfügbaren Versionen finden Sie in der Google Cloud Console.

  5. Geben Sie optional die Instanz an. Wenn Sie keine Instanz angeben, wird eine beliebige verfügbare Instanz verwendet. Die verfügbaren Versionen finden Sie in der Google Cloud Console.

  6. Geben Sie optional die Daten an, die an das Ziel gesendet werden sollen. Die Daten werden im Anfragetext als Byte gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt wurde.

  7. Legen Sie optional die Wiederholungswerte fest. Sie geben im Fehlerfall an, wie der App Engine-Job wiederholt werden soll. In den meisten Fällen sind die Standardeinstellungen ausreichend. Weitere Informationen finden Sie in der gcloud-Befehlszeilenreferenz.

  8. Es stehen weitere optionale Parameter zur Verfügung: z. B. Zeitzone, Beschreibung und andere in der gcloud-Befehlszeilenreferenz beschriebene Parameter.

Befehlszeile als Beispiel:

 gcloud scheduler jobs create app-engine my-appengine-job --schedule "0 1 * * 0" --relative-url "/cron-handler"

HTTP-Ziel

Sie können Anfragen an beliebige HTTP- oder HTTPS-Endpunkte senden. Auf ein Ziel ausgerichtete HTTP-Endpunkte müssen öffentlich zugänglich sein.

Syntax

gcloud scheduler jobs create http JOB --location-LOCATION --schedule=SCHEDULE --uri=URI [optional flags]

Zur Nutzung von HTTP target:

  1. Geben Sie einen Namen für JOB ein. Er muss im Projekt eindeutig sein. Sie können Jobnamen in einem Projekt nicht wiederverwenden, auch wenn Sie den zugehörigen Job gelöscht haben.

  2. Geben Sie den Standort an. Falls nicht angegeben, wird der Standort der aktuellen App Engine-Anwendung des Projekts, sofern vorhanden, verwendet.

  3. Geben Sie an, mit welchem Zeitplan (auch Häufigkeit oder Jobintervall genannt) der Job ausgeführt werden soll. Beispiel: "alle 3 Stunden". Der hier angegebene String kann ein beliebiger Unix-Cron-kompatibler String sein. Sie können auch die alte Cron-Syntax von App Engine verwenden, um den Zeitplan zu beschreiben.

Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

  1. Geben Sie den voll qualifizierten URI des Endpunkts an, an den sich der Job wendet.

  2. Geben Sie optional die HTTP-Methode an. Der Standardwert ist POST.

  3. Geben Sie optional die Daten an, die an das Ziel gesendet werden sollen. Die Daten werden im Anfragetext als Byte gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt wurde.

  4. Legen Sie optional die Wiederholungswerte fest. Sie geben im Fehlerfall an, wie der App Engine-Job wiederholt werden soll. In den meisten Fällen sind die Standardeinstellungen ausreichend. Weitere Informationen finden Sie in der gcloud-Befehlszeilenreferenz.

  5. Es stehen weitere optionale Parameter zur Verfügung: z. B. Zeitzone, Beschreibung und andere in der gcloud-Befehlszeilenreferenz beschriebene Parameter.

  6. Informationen zum Erstellen eines HTTP-Zieljobs, für den eine Authentifizierung erforderlich ist, finden Sie unter Authentifizierung mit HTTP-Zielen verwenden

Befehlszeile als Beispiel:

 gcloud scheduler jobs create http my-http-job --schedule "0 1 * * 0" --uri "http://myproject/my-url.com" --http-method GET

Job bearbeiten

Sie können die Konfiguration eines Jobs bearbeiten.

Console

  1. Rufen Sie in der Konsole Cloud Scheduler auf.

    Zu Cloud Scheduler

  2. Wählen Sie den Job aus, den Sie bearbeiten möchten.

  3. Klicken Sie auf Bearbeiten.

  4. Folgen Sie den Schritten zum Definieren des Zeitplans, der Ausführung und der optionalen Einstellungen beim Erstellen eines Jobs.

gcloud

Wenn Sie einen Job mit der gcloud-Befehlszeile bearbeiten, verwenden Sie für jeden target-Typ unterschiedliche Befehle. Klicken Sie bei Beispielbefehlen auf ein Ziel:

Job pausieren

Sie können die Ausführung eines Jobs pausieren.

Console

  1. Rufen Sie in der Konsole Cloud Scheduler auf.

    Zu Cloud Scheduler

  2. Wählen Sie den zu pausierenden Job aus.

  3. Klicken Sie auf Pausieren.

gcloud

  1. Öffnen Sie ein Terminalfenster auf dem Computer, auf dem Sie die gcloud-Befehlszeile installiert haben.

  2. Führen Sie diesen Befehl aus:

    gcloud scheduler jobs pause MY_JOB
    

    Ersetzen Sie MY_JOB durch den Namen des zu pausierenden Jobs.

Sie können einen pausierten Job auch bearbeiten. Nach der Bearbeitung des Jobs bleibt er pausiert, bis Sie ihn fortsetzen.

Job fortsetzen

Sie können die Ausführung eines pausierten Jobs fortsetzen.

Console

  1. Rufen Sie in der Konsole Cloud Scheduler auf.

    Zu Cloud Scheduler

  2. Wählen Sie den Job aus, um fortzufahren.

    Der Job muss bereits pausiert sein.

  3. Klicken Sie auf Fortsetzen.

gcloud

  1. Öffnen Sie ein Terminalfenster auf dem Computer, auf dem Sie die gcloud-Befehlszeile installiert haben.

  2. Führen Sie diesen Befehl aus:

    gcloud scheduler jobs resume MY_JOB
    

    Ersetzen Sie MY_JOB durch den Namen des Jobs, der fortgesetzt werden soll.

Job löschen

Sie können einen Job löschen.

Console

  1. Rufen Sie in der Konsole Cloud Scheduler auf.

    Zu Cloud Scheduler

  2. Wählen Sie den Job aus, der gelöscht werden soll.

  3. Klicken Sie auf Löschen.

gcloud

  1. Öffnen Sie ein Terminalfenster auf dem Computer, auf dem Sie die gcloud-Befehlszeile installiert haben.

  2. Führen Sie diesen Befehl aus:

    gcloud scheduler jobs delete MY_JOB
    

    Ersetzen Sie MY_JOB durch den Namen des zu löschenden Jobs.