In dieser Anleitung erfahren Sie, wie Sie einen übergeordneten Workflow erstellen und ausführen, der mehrere untergeordnete Workflows parallel ausführt.
Im folgenden Diagramm werden vier parallele Ausführungen des untergeordneten Workflows aufgerufen. Dadurch kann der übergeordnete Workflow Daten in parallelen Zweigen verarbeiten, was die Gesamtausführungszeit reduziert. Der übergeordnete Workflow wartet, bis alle untergeordneten Workflowausführungen abgeschlossen sind, bevor er eine Zusammenfassung erfolgreicher und fehlgeschlagener Ausführungen zurückgibt. Dadurch wird die Fehlererkennung vereinfacht.
Lernziele
In dieser Anleitung werden Sie:
- Erstellen und stellen Sie einen untergeordneten Workflow bereit, der Daten von einem übergeordneten Workflow empfängt.
- Übergeordneten Workflow erstellen und bereitstellen, der mehrere untergeordnete Workflows mithilfe einer parallelen
for
-Schleife ausführt - Führen Sie den übergeordneten Workflow aus, der parallele Ausführungen des untergeordneten Workflows aufruft.
- Die Ergebnisse aller erfolgreichen und fehlgeschlagenen Ausführungen eines untergeordneten Workflows werden in einer Karte gespeichert und zurückgegeben.
Sie können die folgenden Befehle in der Google Cloud Console oder über die Google Cloud CLI in Ihrem Terminal oder in Cloud Shell ausführen.
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
Von Ihrer Organisation definierte Sicherheitsbeschränkungen verhindern möglicherweise, dass die folgenden Schritte ausgeführt werden. Informationen zur Fehlerbehebung finden Sie unter Anwendungen in einer eingeschränkten Google Cloud-Umgebung entwickeln.
Console
-
Melden Sie sich bei Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Workflow Executions and Workflows APIs aktivieren.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Workflows > Workflows Invoker role to the service account.
To grant the role, find the Select a role list, then select Workflows > Workflows Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Workflow Executions and Workflows APIs aktivieren.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Workflows > Workflows Invoker role to the service account.
To grant the role, find the Select a role list, then select Workflows > Workflows Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
gcloud
-
Melden Sie sich bei Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Aktivieren Sie die Workflow Executions and Workflows APIs:
gcloud services enable workflowexecutions.googleapis.com
workflows.googleapis.com -
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/workflows.invoker
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/workflows.invoker
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Aktivieren Sie die Workflow Executions and Workflows APIs:
gcloud services enable workflowexecutions.googleapis.com
workflows.googleapis.com -
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/workflows.invoker
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/workflows.invoker
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
Untergeordneten Workflow erstellen und bereitstellen
Ein untergeordneter Workflow kann Daten von einem übergeordneten Workflow empfangen und verarbeiten. Im untergeordneten Workflow wird dies folgendermaßen veranschaulicht:
- Erhält eine Ganzzahl als Argument.
- Schlaft für 10 Sekunden, um Verarbeitungsprozesse zu simulieren
Gibt einen Indikator zurück (je nachdem, ob die Ganzzahl eine ungerade oder gerade Zahl ist), um den Erfolg oder Misserfolg der Workflowausführung zu simulieren
Console
Öffnen Sie in der Google Cloud Console die Seite Workflows.
Klicken Sie auf
Erstellen.Geben Sie den Namen
workflow-child
für den neuen Workflow ein.Wählen Sie in der Liste Region die Option us-central1 aus.
Wählen Sie das zuvor erstellte Dienstkonto aus.
Klicken Sie auf Next (Weiter).
Geben Sie im Workflow-Editor die folgende Definition für den Workflow ein:
Klicken Sie auf Bereitstellen.
gcloud
Erstellen Sie eine Quellcodedatei für Ihren Workflow:
touch workflow-child.yaml
Öffnen Sie die Quellcodedatei in einem Texteditor und kopieren Sie den folgenden Workflow in die Datei.
Stellen Sie den Workflow bereit:
gcloud workflows deploy workflow-child \ --source=workflow-child.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie
SERVICE_ACCOUNT_NAME
durch den Namen des zuvor erstellten Dienstkontos.
Übergeordneten Workflow erstellen und bereitstellen
Der übergeordnete Workflow führt mehrere Zweige des untergeordneten Workflows mithilfe einer parallelen for
-Schleife aus.
Kopieren Sie den Quellcode für die Workflowdefinition. Sie besteht aus folgenden Teilen:
Eine Zuordnung wird zum Speichern der Ergebnisse der untergeordneten Workflowausführungen verwendet. Weitere Informationen finden Sie unter Karten.
Eine
for
-Schleife wird parallel ausgeführt, um den untergeordneten Workflow aufzurufen. Weitere Informationen finden Sie unter Parallele Schritte und Iteration.Der untergeordnete Workflow wird mit einem Connector aufgerufen. Jeder Iteration des untergeordneten Workflows wird das Argument
iteration
übergeben. Der übergeordnete Workflow wartet auf das Ergebnis jeder untergeordneten Workflowausführung und speichert diese Ergebnisse. Weitere Informationen finden Sie unter Workflows Executions API-Connector und Laufzeitargumente.Die Ausführungsergebnisse werden zurückgegeben. Weitere Informationen finden Sie unter Ausführung eines Workflows abschließen.
Stellen Sie den Workflow bereit:
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf
Erstellen.Geben Sie den Namen
workflow-parent
für den neuen Workflow ein.Wählen Sie in der Liste Region die Option us-central1 aus.
Wählen Sie das zuvor erstellte Dienstkonto aus.
Klicken Sie auf Next (Weiter).
Fügen Sie im Workflow-Editor die Definition für den übergeordneten Workflow ein.
Klicken Sie auf Bereitstellen.
gcloud
Erstellen Sie eine Quellcodedatei für Ihren Workflow:
touch workflow-parent.yaml
Öffnen Sie die Quellcodedatei in einem Texteditor und fügen Sie die Definition für den übergeordneten Workflow ein.
Stellen Sie den Workflow bereit:
gcloud workflows deploy workflow-parent \ --source=workflow-parent.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie
SERVICE_ACCOUNT_NAME
durch den Namen des zuvor erstellten Dienstkontos.
Übergeordneten Workflow ausführen
Führen Sie den übergeordneten Workflow aus, damit Aufrufe des untergeordneten Workflows parallel ausgeführt werden. Die Ausführungen sollten etwa 10 Sekunden dauern.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf der Seite Workflows auf den Workflow workflow-parent, um die zugehörige Detailseite aufzurufen.
Klicken Sie auf der Seite Workflowdetails auf play_arrow Ausführen.
Klicken Sie noch einmal auf Ausführen.
Sehen Sie sich die Ergebnisse des Workflows im Bereich Ausgabe an.
Die Ergebnisse sollten in etwa so aussehen und auf Fehler bei den Iterationen 2 und 4 und einen Erfolg bei den Iterationen 1 und 3 hinweisen.
"failure": { "2": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":2}", "duration": "10.157992541s", "endTime": "2023-07-11T13:13:13.028424329Z", "error": { "context": "RuntimeError: \"Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 2\"", ... "4": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":4}", "duration": "10.157929734s", "endTime": "2023-07-11T13:13:13.061289142Z", "error": { "context": "RuntimeError: \"Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 4\"", ... "success": { "1": "Hello world1", "3": "Hello world3"
gcloud
Führen Sie den Workflow aus:
gcloud workflows run workflow-parent \ --location=us-central1
Die Ergebnisse sollten in etwa so aussehen und auf Fehler bei den Iterationen 2 und 4 und einen Erfolg bei den Iterationen 1 und 3 hinweisen.
Waiting for execution [06c753e4-6947-4c62-ac0b-2a9d53fb1b8f] to complete...done. argument: 'null' duration: 14.065415004s endTime: '2023-07-11T12:50:43.929023883Z' name: projects/386837416586/locations/us-central1/workflows/workflow-parent/executions/06c753e4-6947-4c62-ac0b-2a9d53fb1b8f result: '{"failure":{"2":{"message":"Execution failed or cancelled.","operation":{"argument":"{\"iteration\":2}","duration":"10.143718070s","endTime":"2023-07-11T12:50:40.673209821Z","error":{"context":"RuntimeError: ... "Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "success":{"1":"Hello world1","3":"Hello world3"}}' startTime: '2023-07-11T12:50:29.863608879Z' state: SUCCEEDED
Sie haben erfolgreich einen Workflow erstellt und bereitgestellt, der einen untergeordneten Workflow aufruft, vier Iterationen des untergeordneten Workflows in parallelen Zweigen ausführt und bei jeder Ausführung eines untergeordneten Workflows einen Indikator für Erfolg oder Misserfolg zurückgibt.
Bereinigen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
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:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Anleitungsressourcen löschen
Löschen Sie die in dieser Anleitung erstellten Workflows:
gcloud workflows delete workflow-child gcloud workflows delete workflow-parent
Nächste Schritte
- Weitere Informationen zur Workflow-Syntax finden Sie in der Referenz zur Workflow-Syntax.
- Weitere Informationen zu Workflow-Connectors finden Sie unter Informationen zu Connectors.