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
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf Erstellen.
Geben Sie als Namen für den neuen Workflow
myFirstWorkflow
ein.Wählen Sie us-central1 für die Region aus.
Wählen Sie das Dienstkonto aus, das Sie zuvor erstellt haben.
Klicken Sie auf Next (Weiter).
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.
Klicken Sie auf Bereitstellen.
gcloud
- Öffnen Sie ein Terminalfenster.
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.
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
durchyaml
oderjson
, 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
Rufen Sie in der Google Cloud Console die Seite Cloud Scheduler auf:
Klicken Sie auf Job erstellen.
Legen Sie als Name
my-workflow-job
fest.Geben Sie Folgendes für Häufigkeit ein:
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.
Klicken Sie auf Weiter.
Wählen Sie unter Zieltyp die Option HTTP aus.
Geben Sie unter URL Folgendes ein:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
Behalten Sie für die HTTP-Methode den Standardwert POST bei.
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
- Name:
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.
Wählen Sie für Auth-Header die Option OAuth-Token hinzufügen aus.
Geben Sie das zuvor erstellte Dienstkonto ein.
Sie müssen den Bereich nicht angeben, da der Standardwertsa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform
verwendet wird.Ü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
Rufen Sie in der Google Cloud Console die Seite Cloud Scheduler auf:
Falls der Job nicht angezeigt wird, müssen Sie die Seite möglicherweise aktualisieren.
Klicken Sie für den Job mit dem Namen
my-workflow-job
auf Jetzt ausführen.Der Wert Ergebnis sollte auf Erfolgreich aktualisiert werden.
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie in der Liste der Workflows auf myFirstWorkflow, um die Detailseite zu öffnen.
Der Ausführungsstatus des Workflows sollte Erfolgreich lauten.
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
Führen Sie den Cloud Scheduler-Job aus, um den Workflow auszuführen:
gcloud scheduler jobs run my-workflow-job
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
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.