Workflows mit Cloud Scheduler planen

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

Ziele

  1. Workflow erstellen und bereitstellen, der Laufzeitargumente erhalten kann
  2. Erstellen Sie einen Cloud Scheduler-Job, der Ihren Workflow auslöst und 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 des Erstellens 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 Workflow Ihrer Wahl.
  4. Dienstkonto für Workflows erstellen Beispiel: sa-name.
      gcloud iam service-accounts create sa-name
  5. Weisen Sie dem 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: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 erstellen, der Laufzeitargumente empfängt

Eine Workflowdefinition besteht aus einer Reihe von Schritten, die mit der Workflowssyntax 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 myFirstWorkflow als Namen für den neuen Workflow ein.

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

  5. Wählen Sie das zuvor erstellte Dienstkonto aus.

  6. Klicken Sie auf Next (Weiter).

  7. Geben Sie im Workflow-Editor die folgende 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 Begrüßung bei einer Person zurück, deren Vor- und Nachname als Laufzeitargumente übergeben werden.

  8. Klicken Sie auf Bereitstellen.

gcloud

  1. Öffnen Sie ein Terminalfenster.
  2. Speichern Sie die folgende Workflowdefinition 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 Begrüßung bei einer Person zurück, deren Vor- und Nachname als Laufzeitargumente übergeben werden.

  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 dem Format der zuvor erstellten Workflows-Definitionsdatei.

Workflow planen

Erstellen Sie mit dem zuvor erstellten Dienstkonto 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 für Häufigkeit Folgendes ein:

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

  5. Wählen Sie unter 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 für Zieltyp die Option HTTP aus.

  8. Geben Sie Folgendes für die URL ein:

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

  9. Behalten Sie für die HTTP-Methode die Standardeinstellung 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 Workflow-Argumente übergeben. in diesem Fall 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 Add OAuth token aus.

  13. Geben Sie das Dienstkonto ein, das Sie zuvor erstellt haben.

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

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

gcloud

Geben Sie den folgenden Befehl ein, um einen Job mit dem Namen my-workflow-job zu planen:

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 Format unix-cron definiert.

Mit dem Flag message-body wird eine JSON-Codierung der Workflowargumente übergeben. in diesem Fall der Vorname "Sherlock" und der Nachname "Holmes". Die doppelten Anführungszeichen innerhalb des Strings werden mit umgekehrten 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

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

    Nun sollte der Wert Result in Success geändert 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 zugehörige Detailseite zu öffnen.

    Der Ausführungsstatus Ihres Workflows sollte Erfolgreich sein.

  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, Sherlock Holmes!" sein.

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 fett formatiert ist:

    projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
  3. Rufen Sie die Ergebnisse der Ausführung des Workflows 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 einen Workflow nach einem bestimmten Zeitplan automatisch 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 das Kästchen neben dem Job an.

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

Workflows löschen

  1. Rufen Sie in der Cloud Console die Seite Workflows 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

Durch das Deaktivieren einer App Engine-Anwendung wird verhindert, dass die Anwendung Instanzen ausführt und Anfragen verarbeitet, wobei 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