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. Sie können diese Jobs entweder mit der Cloud Console oder dem gcloud-Befehlszeilentool erstellen.

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.

Cloud Scheduler ist für wiederkehrende Jobs vorgesehen. Falls Sie einen Job nur einmal ausführen müssen, sollten Sie vielleicht Cloud Tasks in Betracht ziehen. Eine Aufgabe kann bis zu 30 Tage im Voraus geplant werden.

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. Beschreiben Sie den Zeitplan, nach dem der Job ausgeführt werden soll, mithilfe eines Konfigurationsstrings. Beispielsweise führt der String 0 1 * * 0 den Job einmal pro Woche um 1 Uhr jeden Sonntagmorgen aus. Der hier angegebene String kann ein beliebiger Unix-Cron-kompatibler String sein.

    Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.

  6. Wählen Sie aus der Drop-down-Liste die Zeitzone aus, die für den Jobplan verwendet werden soll.

  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 einen Job über die 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 als 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. 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.

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 / 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. Wenn Sie ihn festlegen möchten, finden Sie die Dienstnamen in der Google Cloud 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 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 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.

Gezielte App Engine-Endpunkte müssen sich im selben Projekt befinden und können mit login: admin für das Element handlers in 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 als Byte gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt wurde.

  4. Informationen zum Erstellen eines HTTP-Zieljobs, für den eine Authentifizierung erforderlich ist, 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 --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". 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 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 scheduler jobs create pubsub myjob --schedule "0 1 * * 0" --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. 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 --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 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. Wenn Sie ihn festlegen möchten, finden Sie die Dienstnamen in der Google Cloud Console.

  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. Sie finden die verfügbaren Versionen in der Google Cloud 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 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 --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 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 vollständig qualifizierte URL des Endpunkts an, an den sich der Job richtet.

  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 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 [my-job] durch den Namen des zu löschenden Jobs.