Workflows mit Cloud Scheduler planen

In dieser Anleitung erfahren Sie, wie Sie mit Cloud Scheduler automatisch Workflows ausführen, sodass ein Workflow nach einem bestimmten Zeitplan ausgeführt wird, in diesem Fall alle 5 Minuten.

Ziele

  1. Workflow erstellen und bereitstellen, der Laufzeitargumente empfangen kann.
  2. Cloud Scheduler-Job erstellen, der Ihren Workflow auslöst, alle fünf Minuten ausführt und JSON-Argumente im richtigen Format übergibt.

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweis

  1. Richten Sie Ihre Umgebung für Cloud Scheduler ein, einschließlich der Erstellung einer App Engine-Anwendung.
  2. Aktivieren Sie die Workflows API.

    Aktivieren Sie die API

  3. Legen Sie den Standardspeicherort fest, der in dieser Anleitung verwendet wird:
      gcloud config set workflows/location REGION
    Ersetzen Sie REGION durch den unterstützten Workflows-Standort Ihrer Wahl.
  4. Erstellen Sie ein Dienstkonto für zu verwendende Workflows. Beispiel: sa-name.
      gcloud iam service-accounts create sa-name
  5. Gewähren Sie Ihrem Dienstkonto die Rolle workflows.invoker, damit das Konto die Berechtigung zum Auslösen Ihres Workflows hat:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/workflows.invoker"
  6. Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID.
  7. Weisen Sie dem Dienstkonto die Rolle logging.logWriter zu.
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/logging.logWriter"

Workflow für Empfang von Laufzeitargumenten erstellen

Ein Workflow besteht aus einer Reihe von Schritten, die mit der Workflows-Syntax beschrieben werden. Diese kann entweder im YAML- oder JSON-Format geschrieben werden. Nachdem Sie einen Workflow erstellt haben, stellen Sie ihn bereit, um ihn für die Ausführung verfügbar zu machen.

Console

  1. Rufen Sie in der Cloud Console die Seite Workflows auf.

    Zur Seite "Workflows"

  2. Klicken Sie auf Erstellen.

  3. Geben Sie als Namen für den neuen Workflow myFirstWorkflow ein.

  4. Wählen Sie us-central1 für die Region aus.

  5. Wählen Sie das Dienstkonto aus, das Sie zuvor erstellt haben.

  6. Klicken Sie auf Next (Weiter).

  7. Geben Sie im Workflow-Editor die Definition für Ihren Workflow ein.

    YAML

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${outputVar}
    

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "step1": {
              "assign": [
                {
                  "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}"
                }
              ]
            }
          },
          {
            "step2": {
              "return": "${outputVar}"
            }
          }
        ]
      }
    }
      

    Dieser Workflow gibt eine "Hello"-Begrüßung an eine Person zurück, deren Vor- und Nachname Sie als Laufzeitargumente übergeben.

  8. Klicken Sie auf Bereitstellen.

gcloud

  1. Öffnen Sie ein Terminalfenster.
  2. Speichern Sie die folgende Workflow-Definition als YAML- oder JSON-Datei, z. B. myFirstWorkflow.yaml oder myFirstWorkflow.json.

    YAML

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${outputVar}
    

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "step1": {
              "assign": [
                {
                  "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}"
                }
              ]
            }
          },
          {
            "step2": {
              "return": "${outputVar}"
            }
          }
        ]
      }
    }
      

    Dieser Workflow gibt eine "Hello"-Begrüßung an eine Person zurück, deren Vor- und Nachname Sie als Laufzeitargumente übergeben.

  3. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    gcloud workflows deploy myFirstWorkflow \
        --source=myFirstWorkflow.yaml_OR_json \
        --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com

    Ersetzen Sie yaml_OR_json durch yaml oder json, je nach Format der zuvor erstellten Workflow-Definitionsdatei.

Workflow planen

Erstellen Sie mithilfe des zuvor erstellten Dienstkontos einen Cloud Scheduler-Job, der Ihren Workflow auslöst.

Console

  1. Rufen Sie in der Cloud Console die Seite Cloud Scheduler auf.

    Zu Cloud Scheduler

  2. Klicken Sie auf Job erstellen.

  3. Legen Sie als Name my-workflow-job fest.

  4. Geben Sie Folgendes für Häufigkeit ein:

    */5 * * * *
    Der Job wird alle 5 Minuten ausgeführt. Das Intervall wird im unix-cron-Format definiert.

  5. Wählen Sie für die Zeitzone ein Land und eine Zeitzone aus.

    Wählen Sie beispielsweise USA und Los Angeles oder Pacific Daylight Time (PDT) aus.

  6. Klicken Sie auf Weiter.

  7. Wählen Sie unter Zieltyp die Option HTTP aus.

  8. Geben Sie unter URL Folgendes ein:

    https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
    

  9. Behalten Sie für die HTTP-Methode den Standardwert POST bei.

  10. Fügen Sie die folgenden zwei HTTP-Header hinzu:

    • Name: Content-Type und Wert: application/octet-stream
    • Name: User-Agent und Wert: Google-Cloud-Scheduler
  11. Geben Sie als Text Folgendes ein:

    {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
    

    Dadurch wird eine JSON-Codierung der Argumente des Workflows übergeben. In diesem Fall sind der Vorname "Sherlock" und der Nachname "Holmes". Die doppelten Anführungszeichen innerhalb des Strings werden mit umgekehrten Schrägstrichen (\) maskiert.

  12. Wählen Sie für Auth-Header die Option OAuth-Token hinzufügen aus.

  13. Geben Sie das zuvor erstellte Dienstkonto ein.

    sa-name@PROJECT_ID.iam.gserviceaccount.com
    
    Sie müssen den Bereich nicht angeben, da der Standardwert https://www.googleapis.com/auth/cloud-platform verwendet wird.

  14. Übernehmen Sie alle anderen Standardeinstellungen und klicken Sie auf Erstellen.

gcloud

Planen Sie einen Job mit dem Namen my-workflow-job, indem Sie den folgenden Befehl eingeben:

gcloud scheduler jobs create http my-workflow-job \
    --schedule="*/5 * * * *" \
    --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
    --message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
    --time-zone="America/Los_Angeles" \
    --oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"

Das Intervall wird im unix-cron-Format definiert.

Mit dem Flag message-body wird eine JSON-Codierung der Argumente des Workflows übergeben. in diesem Fall der Vorname "Sherlock" und der Nachname "Holmes". Die doppelten Anführungszeichen innerhalb des Strings werden mit Schrägstrichen (\) maskiert.

Der Workflow wird jetzt alle fünf Minuten ausgeführt.

Weitere Informationen zu den Flags gcloud scheduler finden Sie unter Workflow planen und in der Referenz zu gcloud.

Job ausführen und Ergebnisse prüfen

Console

  1. Rufen Sie in der Cloud Console die Seite Cloud Scheduler auf.

    Zu Cloud Scheduler

    Falls der Job nicht angezeigt wird, müssen Sie die Seite möglicherweise aktualisieren.

  2. Klicken Sie für den Job mit dem Namen my-workflow-job auf Jetzt ausführen.

    Der Wert Ergebnis sollte auf Erfolgreich aktualisiert werden.

  3. Rufen Sie in der Cloud Console die Seite Workflows auf.

    Zur Seite "Workflows"

  4. Klicken Sie in der Liste der Workflows auf myFirstWorkflow, um die Detailseite zu öffnen.

    Der Ausführungsstatus des Workflows sollte Erfolgreich lauten.

  5. Klicken Sie auf die Ausführungs-ID des Workflows, um die Detailseite zu öffnen und die Ergebnisse des Workflows im Ausgabebereich anzusehen.

    Die Ausgabe sollte "Hello, SherlockHolmes!" lauten.

gcloud

  1. Führen Sie den Cloud Scheduler-Job aus, um den Workflow auszuführen:

    gcloud scheduler jobs run my-workflow-job
    
  2. Rufen Sie die Ausführungs-ID für Ihren Workflow ab:

    gcloud workflows executions list myFirstWorkflow
    

    Die Ausgabe sollte in etwa so aussehen, wobei die Ausführungs-ID in Fettschrift angezeigt wird:

    projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
  3. Rufen Sie die Ergebnisse der Workflowausführung ab:

    gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow

    Ersetzen Sie EXECUTION_ID durch die im vorherigen Schritt zurückgegebene Ausführungs-ID.

    Die Ausgabe sollte in etwa so aussehen:

    argument: '{"firstName":"Sherlock","lastName":"Holmes"}'
    endTime: '2021-09-09T15:15:00.869350639Z'
    name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
    result: '"Hello, Sherlock Holmes!"'
    startTime: '2021-09-09T15:15:00.839175480Z'
    state: SUCCEEDED
    workflowRevisionId: 000001-4f9

Das war's auch schon! Sie haben erfolgreich einen Cloud Scheduler-Job erstellt, der automatisch einen Workflow nach einem bestimmten Zeitplan ausführt.

Bereinigen

Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Cloud Scheduler-Job löschen

  1. Wechseln Sie in der Cloud Console zur Seite Cloud Scheduler.

    Zu Cloud Scheduler

  2. Klicken Sie auf das Kästchen neben Ihrem Job.

  3. Klicken Sie oben auf der Seite auf Löschen und bestätigen Sie den Löschvorgang.

Workflow löschen

  1. Rufen Sie in der Cloud Console die Seite Notebooks auf.

    Zur Seite "Workflows"

  2. Wählen Sie Ihren Workflow aus.

  3. Klicken Sie oben auf der Seite auf Löschen. Geben Sie den Namen Ihres Workflows ein und bestätigen Sie den Löschvorgang.

App Engine-Anwendung deaktivieren

Mit der Deaktivierung einer App Engine-Anwendung wird verhindert, dass Ihre Anwendung Instanzen ausführt und Anfragen verarbeitet, während Anwendungsdaten und -einstellungen beibehalten werden.

  1. Rufen Sie in der Cloud Console die Seite Anwendungseinstellungen auf.

    Zu den Anwendungseinstellungen

  2. Klicken Sie auf Anwendung deaktivieren.

  3. Führen Sie dazu die angezeigten Schritte aus.

Nächste Schritte