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

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 Google 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 Google 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 sowie zum Anwenden der Anrufprotokollierung, damit jeder Anrufschritt während der Ausführung Ihres Workflows protokolliert wird, finden Sie unter Workflow planen und in der Referenz zu gcloud.

Job ausführen und Ergebnisse prüfen

Console

  1. Rufen Sie in der Google 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 Google 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.