Workflow mit Cloud Scheduler planen

Auf dieser Seite wird beschrieben, wie Sie mit Cloud Scheduler einen Workflow nach einem bestimmten Zeitplan ausführen, etwa jeden Montag um 9:00 Uhr oder alle 15 Minuten. Sie können den Zeitplan entweder in der Google Cloud Console oder mit der Google Cloud-Befehlszeile konfigurieren.

Hinweis

  1. Wenn Sie noch keinen Workflow haben, den Sie planen möchten, müssen Sie einen erstellen und bereitstellen.
  2. Cloud Scheduler API aktivieren.

    Aktivieren Sie die API

  3. Sie können auch in einem Terminal den folgenden Befehl eingeben:
    gcloud services enable cloudscheduler.googleapis.com

Workflow planen

  1. Erstellen Sie ein Dienstkonto, damit Cloud Scheduler Anfragen an die Workflows API senden kann:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch einen Namen mit 6 bis 30 Zeichen. Er kann alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.

  2. Damit das Hauptkonto, das Ihre Cloud Scheduler-Befehle ausführt, als IAM-Dienstkonto (Identity and Access Management) fungieren kann, weisen Sie eine Rolle zu, mit der das Hauptkonto die Identität des Dienstes übernehmen kann..

  3. Weisen Sie Ihrem neuen Dienstkonto die Rolle workflows.invoker zu, damit das Konto die Berechtigung zum Auslösen Ihres Workflows hat:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/workflows.invoker

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • SERVICE_ACCOUNT_NAME: Name des zuvor erstellten Dienstkontos.
  4. Erstellen Sie einen Cloud Scheduler-Job, der Ihren Workflow auslöst. Verwenden Sie dazu das Dienstkonto, das Sie zuvor zur Authentifizierung erstellt haben:

    Console

    1. Um einen Workflow zu planen, rufen Sie in der Konsole die Seite Workflows auf:

      Zur Seite "Workflows"

    2. Wählen Sie auf der Seite "Workflows" einen Workflow aus, um dessen Detailseite aufzurufen.

    3. Klicken Sie auf der Seite Workflow-Details auf Ausführen.

    4. Wählen Sie auf der Seite Workflow bearbeiten die Option Neuen Trigger hinzufügen > Cloud Scheduler aus.

      Der Bereich Scheduler-Job erstellen wird geöffnet.

    5. Zeitplan definieren:

      1. Geben Sie im Feld Name einen Namen für Ihren Cloud Scheduler-Job ein. Er muss unter den Jobs in derselben Region eindeutig sein.

      2. Wählen Sie in der Liste Region eine geeignete Region aus, z. B. us-central1.

      3. Geben Sie im Feld Häufigkeit ein Zeitintervall an, das Sie in einem unix-cron-Format definieren. Wenn Sie beispielsweise den Workflow alle fünf Minuten planen möchten, geben Sie */5 * * * * ein.

      4. Wählen Sie in der Liste Zeitzone die Zeitzone aus, die Cloud Scheduler verwenden soll, um den von Ihnen bereitgestellten Zeitplan zu interpretieren. Sie können nach Ländern suchen.

    6. Klicken Sie auf Weiter.

    7. Ausführung konfigurieren:

      1. Geben Sie im Feld Workflow ein Laufzeitargument an, das vor der Ausführung an den Workflow übergeben werden soll. Argumente müssen im JSON-Format vorliegen. Beispiel: {"firstName":"Sherlock", "lastName":"Holmes"} Wenn in deinem Workflow keine Laufzeitargumente verwendet werden, kannst du den Standardwert {} übernehmen oder das Feld leer lassen.

      2. Wählen Sie in der Liste Workflow-Anrufliste die Ebene für Anruf-Logging aus, die Sie während der Ausführung des Workflows anwenden möchten. Sie können die Standardeinstellung Keine Logs akzeptieren oder eine der folgenden Optionen auswählen:

        • Alle Aufrufe: Protokolliert alle Aufrufe von Unterworkflows oder Bibliotheksfunktionen und deren Ergebnisse.
        • Nur Fehler: Es wird nur protokolliert, wenn ein Aufruf aufgrund einer Ausnahme beendet wird.
      3. Wählen Sie in der Liste Dienstkonto das Dienstkonto aus, das Sie zuvor erstellt haben.

    8. Klicken Sie auf Erstellen.

      Wenn Sie einen vorhandenen Workflow aktualisieren, müssen Sie den Workflow nicht noch einmal bereitstellen.

      Der Cloud Scheduler-Job wird jetzt auf der Seite Workflows-Details auf dem Tab Trigger aufgeführt.

    9. Wenn Sie den Job aktualisieren oder löschen möchten, müssen Sie den Workflow bearbeiten:

      1. Klicken Sie auf der Seite Workflow-Details auf Ausführen.
      2. Suchen Sie im Abschnitt Trigger den Job, den Sie aktualisieren oder löschen möchten.
      3. Klicken Sie auf Ressource bearbeiten oder Ressource löschen.

    gcloud

    1. Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein:

      gcloud scheduler jobs create http JOB_NAME \
      --schedule="FREQUENCY" \
      --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
      --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
      --time-zone="TIME_ZONE" \
      --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

      Ersetzen Sie Folgendes:

      • JOB_NAME: Der Name, den Sie dem Cloud Scheduler-Job geben.
      • FREQUENCY: ein Zeitintervall, das Sie im Format unix-cron definieren. Wenn Sie beispielsweise den Workflow alle fünf Minuten planen möchten, geben Sie */5 * * * * ein.
      • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
      • REGION_NAME: Die Region, in der sich Ihr Workflow befindet, z. B. us-central1.
      • WORKFLOW_NAME: Der Name des Workflows, für den Sie die Ausführung planen möchten.
      • DOUBLE_ESCAPED_JSON_STRING: Eine JSON-Codierung aller Argumente, die Sie übergeben. Die doppelten Anführungszeichen innerhalb des Strings in Anführungszeichen werden mit Schrägstrichen (\) maskiert. Beispiel: --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: Die Zeitzone, mit der Cloud Scheduler den von Ihnen angegebenen Zeitplan interpretieren sollte. Beispiel: America/New_York.
      • SERVICE_ACCOUNT_NAME: Name des zuvor erstellten Dienstkontos.
    2. So rufen Sie alle Jobs in einem Projekt ab:

      gcloud scheduler jobs list

    3. So löschen Sie einen Job:

      gcloud scheduler jobs delete JOB_NAME

Der Workflow wird jetzt mit der von Ihnen definierten Häufigkeit ausgeführt.

Weitere Informationen