Cronjobs erstellen und konfigurieren

Cloud Scheduler ist ein Dienst, mit dem Sie geplante Arbeitseinheiten, sogenannte Cronjobs, einrichten, die nach einem wiederkehrenden Zeitplan (auch Jobintervall oder Häufigkeit genannt) an bestimmte Ziele gesendet werden. Die Jobs werden entweder mit der GCP Console oder dem gcloud-Befehlszeilentool erstellt.

Es darf immer nur eine Instanz eines Jobs ausgeführt werden. Beachten Sie außerdem, dass Cloud Scheduler darauf ausgelegt ist, "mindestens einmal" zu liefern. Wenn ein Job geplant ist, sendet Cloud Scheduler die Jobanfrage mindestens einmal. In seltenen Fällen können mehrere Instanzen desselben Jobs angefragt werden. Daher sollte der Anfrage-Handler idempotent sein und der Code muss dafür sorgen, dass in diesem Fall keine schädlichen Nebenwirkungen auftreten.

Jobs erstellen

Jobs werden entweder in der Konsole oder in der gcloud-Befehlszeile erstellt. Klicken Sie auf den entsprechenden Tab:

Konsole

  1. Gehen Sie in der Konsole zur Cloud Scheduler-Seite.

    Cloud Scheduler

  2. Klicken Sie auf Job erstellen.

    Screenshot

  3. Geben Sie einen Namen für den Job an. Er muss im Projekt eindeutig sein. Sie können Jobnamen in einem Projekt wiederverwenden, nachdem Sie den zugehörigen Job gelöscht haben.

  4. Geben Sie optional eine kurze Beschreibung des Jobs an, in der z. B. der Zweck des Jobs als Erinnerungshilfe genannt ist. Die Beschreibung wird in der Konsole neben dem Jobnamen angezeigt.

  5. Geben Sie an, mit welcher Häufigkeit bzw. in welchem Intervall der Job ausgeführt werden soll. Verwenden Sie dafür einen Konfigurationsstring. Beispiel: Bei Angabe des Strings 0 */3 * * * wird der Job alle 3 Stunden ausgeführt. Hier kann jeder beliebige mit Crontab kompatible String angegeben werden. Entwickler, die mit dem alten Cron-Format von App Engine vertraut sind, können auch die Cron-Syntax von App Engine verwenden.

    Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

  6. Wählen Sie aus der Drop-down-Liste die Zeitzone für die Jobhäufigkeit aus.

  7. Geben Sie das Ziel an:

  8. Klicken Sie auf Erstellen, um den Job zu erstellen und zu speichern. Der Job wird nun mit der angegebenen Häufigkeit ausgeführt.

gcloud

Wenn Sie Jobs mit der gcloud-Befehlszeile erstellen, verwenden Sie für jeden Zieltyp unterschiedliche Befehle. Die folgenden Ziellinks führen zu Befehlszeilen, die als Beispiel dienen können:

Pub/Sub-Ziel

Wenn Sie das Ziel "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. Sie wird in der Pub/Sub-Nachricht im Parameter data gesendet. Ein Beispiel dafür finden Sie im Schnellstart.

Cloud Scheduler veröffentlicht Nachrichten zu diesem Thema mit einem Google APIs-Dienstkonto. Beachten Sie, dass die Pub/Sub-Zielkonfiguration keine Optionen zum Festlegen von Wiederholungen anbietet, da Pub/Sub einen eigenen Wiederholungsmechanismus und eine eigene Richtlinie bereitstellt.

App Engine-Ziel

Wenn Sie das Ziel App Engine HTTP auswählen, müssen Sie die App Engine-Anwendung verwenden, die dem aktuellen Projekt zugeordnet ist. Möchten Sie eine andere App Engine-Anwendung außerhalb Ihres aktuellen Projekts verwenden, wählen Sie nicht App Engine HTTP sondern HTTP als Ziel.

Legen Sie das Format so fest:

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

  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 finden die Namen der Dienste in der Google Cloud Platform Console.

  3. Legen Sie 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. Sie finden die verfügbaren Versionen in der Google Cloud Platform Console.

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

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

Auf ein Ziel ausgerichtete App Engine-Endpunkte müssen sich im selben Projekt befinden und können mit login: admin im Element handlers der Datei app.yaml gesichert werden.

HTTP-Ziel

Wenn Sie das Ziel 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. Die Daten werden im Anfragetext gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt wurde.

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 beta scheduler jobs create pubsub JOB --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 an, mit welchem Zeitplan (auch Häufigkeit oder Jobintervall genannt) der Job ausgeführt werden soll. Beispiel: "alle 3 Stunden". Hier kann jeder beliebige mit Crontab kompatible String angegeben werden. Entwickler, die mit dem alten Cron-Format von App Engine vertraut sind, können alternativ auch die Cron-Syntax von App Engine verwenden.

    Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

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

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

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

Beachten Sie, dass die Pub/Sub-Zielkonfiguration keine Optionen zum Festlegen von Wiederholungen anbietet, da Pub/Sub einen eigenen Wiederholungsmechanismus und eine eigene Richtlinie bereitstellt.

Befehlszeile als Beispiel:

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

App Engine-Ziel

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

App Engine-Endpunkte können mit login: admin im Element handlers der Datei app.yaml gesichert werden.

Syntax

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

So verwenden Sie das Ziel 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 an, mit welchem Zeitplan (auch Häufigkeit oder Jobintervall genannt) der Job ausgeführt werden soll. Beispiel: "alle 3 Stunden". Hier kann jeder beliebige mit Crontab kompatible String angegeben werden. Entwickler, die mit dem alten Cron-Format von App Engine vertraut sind, können alternativ auch die Cron-Syntax von App Engine verwenden.

    Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

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

  4. 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 finden die Namen der Dienste in der Google Cloud Platform Console.

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

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

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

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

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

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

Befehlszeile als Beispiel:

 gcloud beta scheduler jobs create app-engine my-appengine-job --schedule "0 */3 * * *" --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 --schedule=SCHEDULE --uri=URI [optional flags]

So verwenden Sie das Ziel 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 an, mit welchem Zeitplan (auch Häufigkeit oder Jobintervall genannt) der Job ausgeführt werden soll. Beispiel: "alle 3 Stunden". Hier kann jeder beliebige mit Crontab kompatible String angegeben werden. Entwickler, die mit dem alten Cron-Format von App Engine vertraut sind, können alternativ auch die Cron-Syntax von App Engine verwenden.

    Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

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

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

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

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

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

Befehlszeile als Beispiel:

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

Job löschen

So löschen Sie einen Job:

Konsole

  1. Gehen Sie in der Konsole zur Cloud Scheduler-Seite.

    Cloud Scheduler

  2. Wählen Sie den zu löschenden Job aus.

  3. Klicken Sie auf Job löschen.

gcloud

  1. Öffnen Sie ein Terminalfenster auf dem Computer, auf dem Sie das Cloud SDK installiert haben.

  2. Rufen Sie den folgenden Befehl auf:

    gcloud scheduler jobs delete [my-job]
    

    Ersetzen Sie dabei [my-job] durch den Namen des zu löschenden Jobs.