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
- Workflow erstellen und bereitstellen, der Laufzeitargumente empfangen kann.
- Cloud Scheduler-Job erstellen, der Ihren Workflow auslöst, alle fünf Minuten ausführt und JSON-Argumente im richtigen Format übergibt.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweise
- Richten Sie Ihre Umgebung für Cloud Scheduler ein, einschließlich der Erstellung einer App Engine-Anwendung.
-
Enable the Workflows API.
- Legen Sie den Standardspeicherort fest, der in dieser Anleitung verwendet wird:
Ersetzen Siegcloud config set workflows/location REGION
REGION
durch den unterstützten Workflows-Standort Ihrer Wahl. - Erstellen Sie ein Dienstkonto für zu verwendende Workflows. Beispiel:
sa-name
.gcloud iam service-accounts create sa-name
- 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"
Ersetzen Sie - 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"
PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
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
Öffnen Sie in der Google Cloud Console die Seite Workflows.
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:
Dadurch wird der Job 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 Umfang nicht als Standard-sa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform
wird verwendet.Ü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 gcloud scheduler
-Flags und zum Anwenden der Flags
damit jeder Aufrufschritt während der Ausführung Ihres Workflows
finden Sie unter Workflow planen und in den
gcloud
-Referenz
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.
Öffnen Sie in der Google Cloud Console die Seite Workflows.
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.
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Cloud Scheduler-Job löschen
Rufen Sie in der Google Cloud Console die Seite Cloud Scheduler auf.
Klicken Sie auf das Kästchen neben Ihrem Job.
Klicken Sie oben auf der Seite auf Löschen und bestätigen Sie den Löschvorgang.
Workflow löschen
Rufen Sie in der Google Cloud Console die Seite Workflows auf.
Wählen Sie Ihren Workflow aus.
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.
Rufen Sie in der Google Cloud Console die Seite Anwendungseinstellungen auf.
Klicken Sie auf Anwendung deaktivieren.
Führen Sie dazu die angezeigten Schritte aus.
Nächste Schritte
- Weitere Informationen zu Workflows.