Mit Workflows können Sie Cloud Run-Jobs als Teil eines Workflows ausführen, um eine komplexere Datenverarbeitung durchzuführen oder ein System vorhandener Jobs zu orchestrieren.
In dieser Anleitung wird gezeigt, wie Sie mit Workflows einen Cloud Run-Job ausführen, der Daten verarbeitet, die als Umgebungsvariablen an den Job als Reaktion auf ein Ereignis aus Cloud Storage übergeben werden.
Sie können die Ereignisdaten auch in einem Cloud Storage-Bucket speichern, sodass Sie die Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln verschlüsseln können. Weitere Informationen finden Sie unter Cloud Run-Job ausführen, der in Cloud Storage gespeicherte Ereignisdaten verarbeitet.
Lernziele
In dieser Anleitung werden Sie:
- Erstellen Sie einen Cloud Run-Job, der Datendateien in einem Cloud Storage-Bucket verarbeitet.
- Stellen Sie einen Workflow bereit, der folgende Aufgaben ausführt:
- Akzeptiert ein Cloud Storage-Ereignis als Argument.
- Prüft, ob der im Ereignis angegebene Cloud Storage-Bucket derselbe Bucket ist, der vom Cloud Run-Job verwendet wird.
- Wenn ja, verwenden Sie den Cloud Run Admin API-Connector, um den Cloud Run-Job auszuführen.
- Eventarc-Trigger erstellen, der den Workflow als Reaktion auf Ereignisse ausführt, die sich auf den Cloud Storage-Bucket auswirken.
- Lösen Sie den Workflow aus, indem Sie eine Eingabedatendatei im Cloud Storage-Bucket aktualisieren.
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 Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc und Workflows APIs aktivieren.
-
Erstellen Sie ein Dienstkonto:
-
Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.
Zur Seite „Dienstkonto erstellen“ - Wählen Sie Ihr Projekt aus.
-
Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for quickstart
. - Klicken Sie auf Erstellen und fortfahren.
-
Weisen Sie dem Dienstkonto die folgenden Rollen zu: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Workflows Invoker.
Wenn Sie eine Rolle zuweisen möchten, wählen Sie die Liste Rolle auswählen aus und wählen Sie die Rolle aus.
Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf
Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu. - Klicken Sie auf Weiter.
-
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
-
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc und Workflows APIs aktivieren.
-
Erstellen Sie ein Dienstkonto:
-
Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.
Zur Seite „Dienstkonto erstellen“ - Wählen Sie Ihr Projekt aus.
-
Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for quickstart
. - Klicken Sie auf Erstellen und fortfahren.
-
Weisen Sie dem Dienstkonto die folgenden Rollen zu: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Workflows Invoker.
Wenn Sie eine Rolle zuweisen möchten, wählen Sie die Liste Rolle auswählen aus und wählen Sie die Rolle aus.
Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf
Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu. - Klicken Sie auf Weiter.
-
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
-
- Bevor Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, müssen Sie dem Cloud Storage-Dienst-Agent, einem von Google verwalteten Dienstkonto, die Rolle „Pub/Sub-Publisher“ (
roles/pubsub.publisher
) zuweisen:- Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.
- Suchen Sie in der Spalte Hauptkonto den Cloud Storage-Dienst-Agent mit dem Format
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
und klicken Sie dann in der entsprechenden Zeile auf Hauptkonto bearbeiten. - Klicken Sie entweder auf Rolle hinzufügen oder Weitere Rolle hinzufügen.
- Filtern Sie in der Liste Rolle auswählen nach Pub/Sub-Publisher und wählen Sie dann die Rolle aus.
- Klicken Sie auf Speichern.
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, um authentifizierte Pub/Sub-Push-Anfragen zu unterstützen, weisen Sie dem von Google verwalteten Dienstkonto die Rolle Ersteller von Dienstkonto-Tokens (
roles/iam.serviceAccountTokenCreator
) zu. Andernfalls wird diese Rolle standardmäßig gewährt:- Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.
- Suchen Sie in der Spalte Name das Cloud Pub/Sub-Dienstkonto und klicken Sie dann in der entsprechenden Zeile auf Hauptkonto bearbeiten.
- Klicken Sie entweder auf Rolle hinzufügen oder Weitere Rolle hinzufügen.
- Filtern Sie in der Liste Rolle auswählen nach Ersteller von Dienstkonto-Tokens und wählen Sie dann die Rolle aus.
- Klicken Sie auf Speichern.
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Cloud Shell unterstützt die
/dev/urandom
-Befehle in dieser Anleitung, die Pseudozufallszahlen generieren.
gcloud
Wenn Sie ein Online-Terminal mit der bereits eingerichteten gcloud CLI verwenden möchten, aktivieren Sie Cloud Shell:
Unten auf dieser Seite wird eine Cloud Shell-Sitzung gestartet und eine Befehlszeilen-Eingabeaufforderung angezeigt. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Cloud Shell unterstützt die
/dev/urandom
-Befehle in dieser Anleitung, die Pseudozufallszahlen generieren.- Google Cloud-Projekt erstellen oder auswählen.
-
Erstellen Sie ein Google Cloud-Projekt:
gcloud projects create PROJECT_ID
-
Wählen Sie das erstellte Google Cloud-Projekt aus:
gcloud config set project PROJECT_ID
-
- Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc und Workflows APIs:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ storage.googleapis.com \ workflows.googleapis.com
- Erstellen Sie ein Dienstkonto für Ihren Workflow, das Sie für die Authentifizierung bei anderen Google Cloud-Diensten verwenden möchten, und weisen Sie ihm die entsprechenden Rollen zu.
- Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ersetzen Sie
SERVICE_ACCOUNT_NAME
durch einen Namen für das Dienstkonto. - Weisen Sie dem vom Nutzer verwalteten Dienstkonto, das Sie im vorherigen Schritt erstellt haben, Rollen zu. Führen Sie den folgenden Befehl einmal für jede der folgenden IAM-Rollen aus oder verwenden Sie das Flag
--role
mehrmals in einem einzigen Befehl:roles/eventarc.eventReceiver
: zum Empfangen von Ereignissenroles/logging.logWriter
: zum Schreiben von Logsroles/run.admin
: zum Ausführen des Cloud Run-Jobsroles/workflows.invoker
: zum Aufrufen von Workflows
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=ROLE
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, in dem Sie das Dienstkonto erstellt habenROLE
: Rolle, die dem vom Nutzer verwalteten Dienstkonto zugewiesen werden soll
- Erstellen Sie das Dienstkonto:
- Bevor Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, weisen Sie dem Cloud Storage-Dienst-Agent die Pub/Sub-Publisher-Rolle (
roles/pubsub.publisher
) zu: Verwaltetes Dienstkonto:SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'
- Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, um authentifizierte Pub/Sub-Push-Anfragen zu unterstützen, weisen Sie dem von Google verwalteten Dienstkonto die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) zu. Andernfalls wird diese Rolle standardmäßig zugewiesen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Ersetzen Sie PROJECT_NUMBER
durch Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Terraform
Wenn Sie ein Online-Terminal mit der bereits eingerichteten gcloud CLI verwenden möchten, aktivieren Sie Cloud Shell:
Unten auf dieser Seite wird eine Cloud Shell-Sitzung gestartet und eine Befehlszeilen-Eingabeaufforderung angezeigt. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Cloud Shell unterstützt die
/dev/urandom
-Befehle in dieser Anleitung, die Pseudozufallszahlen generieren.- Google Cloud-Projekt erstellen oder auswählen.
-
Erstellen Sie ein Google Cloud-Projekt:
gcloud projects create PROJECT_ID
-
Wählen Sie das erstellte Google Cloud-Projekt aus:
gcloud config set project PROJECT_ID
-
- Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc und Workflows APIs:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ storage.googleapis.com \ workflows.googleapis.com
Erstellen Sie ein Dienstkonto für Ihren Workflow, das Sie für die Authentifizierung bei anderen Google Cloud-Diensten verwenden möchten, und weisen Sie ihm die entsprechenden Rollen zu. Damit direkte Ereignisse aus Cloud Storage unterstützt werden, müssen Sie dem Cloud Storage-Dienst-Agent, einem von Google verwalteten Dienstkonto, die Rolle Pub/Sub-Publisher (
roles/pubsub.publisher
) zuweisen.Ändern Sie die Datei
main.tf
wie im folgenden Beispiel gezeigt. Weitere Informationen finden Sie in der Dokumentation zum Google-Anbieter für Terraform.Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Beachten Sie, dass Sie in einem typischen Terraform-Workflow den gesamten Plan auf einmal anwenden. Für die Zwecke dieser Anleitung können Sie jedoch auf eine bestimmte Ressource abzielen. Beispiel:
terraform apply -target="google_service_account.workflows"
- Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, um authentifizierte Pub/Sub-Push-Anfragen zu unterstützen, weisen Sie dem von Google verwalteten Dienstkonto die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) zu. Andernfalls wird diese Rolle standardmäßig zugewiesen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Ersetzen Sie PROJECT_NUMBER
durch Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Cloud Run-Job erstellen
In dieser Anleitung wird ein Cloud Run-Beispieljob aus GitHub verwendet. Der Job liest Daten aus einer Eingabedatei in Cloud Storage und führt für jede Zeile in der Datei eine beliebige Verarbeitung durch.
Rufen Sie den Beispielcode ab, indem Sie das Repository der Beispielanwendung auf Ihren lokalen Computer klonen:
git clone https://github.com/GoogleCloudPlatform/jobs-demos.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Beispielcode enthält:
cd jobs-demos/parallel-processing
Erstellen Sie einen Cloud Storage-Bucket zum Speichern einer Eingabedatei, die in ein Ereignis geschrieben und ausgelöst werden kann:
Console
- Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.
- Klicke auf Hinzufügen Erstellen.
- Geben Sie auf der Seite Bucket erstellen einen Namen für den Bucket ein:
input-PROJECT_ID
Ersetzen SiePROJECT_ID
durch die ID Ihres Google Cloud-Projekts. - Behalten Sie die anderen Standardeinstellungen bei.
- Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl
gcloud storage buckets create
aus:gcloud storage buckets create gs://input-PROJECT_ID
Wenn die Anfrage erfolgreich ist, gibt der Befehl die folgende Meldung zurück:
Creating gs://input-PROJECT_ID/...
Terraform
Verwenden Sie zum Erstellen eines Cloud Storage-Bucket die Ressource
google_storage_bucket
und ändern Sie die Dateimain.tf
, wie im folgenden Beispiel gezeigt.Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Beachten Sie, dass Sie in einem typischen Terraform-Workflow den gesamten Plan auf einmal anwenden. Für die Zwecke dieser Anleitung können Sie jedoch auf eine bestimmte Ressource abzielen. Beispiel:
terraform apply -target="random_id.bucket_name_suffix"
und
terraform apply -target="google_storage_bucket.default"
- Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.
Erstellen Sie ein Artifact Registry-Standard-Repository, in dem Sie Ihr Container-Image speichern können:
Console
Rufen Sie in der Google Cloud Console die Artifact Registry-Seite Repositories auf:
Klicken Sie auf
Repository erstellen.Geben Sie einen Namen für das Repository ein, z. B.
my-repo
. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.Behalten Sie das Standardformat bei, das Docker sein sollte.
Behalten Sie den Standardmodus bei. Er sollte Standard sein.
Wählen Sie als Region us-central1 (Iowa) aus.
Behalten Sie alle anderen Standardeinstellungen bei.
Klicken Sie auf Erstellen.
gcloud
Führen Sie diesen Befehl aus:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=us-central1
Ersetzen Sie
REPOSITORY
durch einen eindeutigen Namen für das Repository, z. B.my-repo
. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.Terraform
Verwenden Sie die Ressource
google_artifact_registry_repository
und ändern Sie die Dateimain.tf
, wie im folgenden Beispiel gezeigt, um ein Artifact Registry-Repository zu erstellen.Beachten Sie, dass Sie in einem typischen Terraform-Workflow den gesamten Plan auf einmal anwenden. Für die Zwecke dieser Anleitung können Sie jedoch auf eine bestimmte Ressource abzielen. Beispiel:
terraform apply -target="google_artifact_registry_repository.default"
Erstellen Sie das Container-Image mit einem Google Cloud-Standard-Buildpack:
export SERVICE_NAME=parallel-job gcloud builds submit \ --pack image=us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/${SERVICE_NAME}
Ersetzen Sie
REPOSITORY
durch den Namen Ihres Artifact Registry-Repositorys.Es kann einige Minuten dauern, bis der Build abgeschlossen ist.
Erstellen Sie einen Cloud Run-Job, der das Container-Image bereitstellt:
Console
Rufen Sie in der Google Cloud Console die Seite Cloud Run auf:
Klicken Sie auf Job erstellen, um das Formular Job erstellen aufzurufen.
- Wählen Sie im Formular
us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latest
als URL des Artifact Registry-Container-Images aus. - Optional: Geben Sie als Jobnamen
parallel-job
ein. - Optional: Wählen Sie us-central1 (Iowa) als Region aus.
- Geben Sie für die Anzahl der Tasks, die Sie im Job ausführen möchten,
10
ein. Damit der Job erfolgreich ist, müssen alle Tasks erfolgreich sein. Standardmäßig werden die Aufgaben parallel ausgeführt.
- Wählen Sie im Formular
Maximieren Sie den Bereich Container, Variablen und Secrets, Verbindungen, Sicherheit und behalten Sie alle Standardeinstellungen bis auf die folgenden bei:
Klicken Sie auf den Tab Allgemein.
- Geben Sie als Containerbefehl
python
ein. - Geben Sie als Containerargument
process.py
ein.
- Geben Sie als Containerbefehl
Klicken Sie auf den Tab Variablen und Secrets.
- Klicken Sie auf Variable hinzufügen und geben Sie
INPUT_BUCKET
als Namen undinput-PROJECT_ID
als Wert ein. - Klicken Sie auf Variable hinzufügen und geben Sie
INPUT_FILE
als Namen undinput_file.txt
als Wert ein.
- Klicken Sie auf Variable hinzufügen und geben Sie
Klicken Sie auf Erstellen, um den Job zu erstellen.
gcloud
Führen Sie diesen Befehl aus:
gcloud run jobs create parallel-job \ --image us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job \ --command python \ --args process.py \ --tasks 10 \ --set-env-vars=INPUT_BUCKET=input-PROJECT_ID,INPUT_FILE=input_file.txt
Eine vollständige Liste der verfügbaren Optionen beim Erstellen eines Jobs finden Sie in der Dokumentation zur Befehlszeilenschnittstelle gcloud run jobs create.
Sobald der Job erstellt ist, sollte eine Meldung angezeigt werden, die den Erfolg anzeigt.
Terraform
Verwenden Sie zum Erstellen eines Cloud Run-Jobs die Ressource
google_cloud_run_v2_job
und ändern Sie die Dateimain.tf
, wie im folgenden Beispiel gezeigt.Beachten Sie, dass Sie in einem typischen Terraform-Workflow den gesamten Plan auf einmal anwenden. Für die Zwecke dieser Anleitung können Sie jedoch auf eine bestimmte Ressource abzielen. Beispiel:
terraform apply -target="google_cloud_run_v2_job.default"
Workflow bereitstellen, der den Cloud Run-Job ausführt
Definieren und stellen Sie einen Workflow bereit, der den soeben erstellten Cloud Run-Job ausführt. Eine Workflowdefinition besteht aus einer Reihe von Schritten, die mithilfe der Workflows-Syntax beschrieben werden.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf
Erstellen.Geben Sie einen Namen für den neuen Workflow ein, z. B.
cloud-run-job-workflow
.Wählen Sie als Region us-central1 (Iowa) aus.
Wählen Sie im Feld Dienstkonto das Dienstkonto aus, das Sie zuvor erstellt haben.
Das Dienstkonto dient als Identität des Workflows. Sie sollten dem Dienstkonto bereits die Rolle Cloud Run-Administrator zugewiesen haben, damit der Workflow den Cloud Run-Job ausführen kann.
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 cloud-run-job-workflow.yaml
Kopieren Sie die folgende Workflowdefinition in die Quellcodedatei:
Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:
gcloud workflows deploy cloud-run-job-workflow \ --location=us-central1 \ --source=cloud-run-job-workflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_NAME
: der Name des Dienstkontos, das Sie zuvor erstellt habenPROJECT_ID
: die ID Ihres Google Cloud-Projekts
Das Dienstkonto dient als Identität des Workflows. Sie sollten dem Dienstkonto bereits die Rolle
roles/run.admin
zugewiesen haben, damit der Workflow den Cloud Run-Job ausführen kann.
Terraform
Verwenden Sie zum Erstellen eines Workflows die Ressource google_workflows_workflow
und ändern Sie die Datei main.tf
wie im folgenden Beispiel gezeigt.
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Beachten Sie, dass Sie in einem typischen Terraform-Workflow den gesamten Plan auf einmal anwenden. Für die Zwecke dieser Anleitung können Sie jedoch auf eine bestimmte Ressource abzielen. Beispiel:
terraform apply -target="google_workflows_workflow.default"
Der Workflow umfasst folgende Schritte:
Schritt
init
: Akzeptiert ein Cloud Storage-Ereignis als Argument und legt dann die erforderlichen Variablen fest.Schritt
check_input_file
: Es wird geprüft, ob der im Ereignis angegebene Cloud Storage-Bucket der Bucket ist, der vom Cloud Run-Job verwendet wird.- Wenn ja, fährt der Workflow mit dem Schritt
run_job
fort. - Andernfalls wird der Workflow beendet und die weitere Verarbeitung wird angehalten.
- Wenn ja, fährt der Workflow mit dem Schritt
Schritt
run_job
: Der Job wird mit der Methodegoogleapis.run.v1.namespaces.jobs.run
des Cloud Run Admin API-Connectors ausgeführt. Die Namen der Cloud Storage-Bucket und der Datendateien werden als Überschreibungsvariablen vom Workflow an den Job übergeben.Schritt
finish
: Gibt Informationen zur Jobausführung als Ergebnis des Workflows zurück.
Eventarc-Trigger für den Workflow erstellen
Um den Workflow und damit den Cloud Run-Job bei jeder Aktualisierung der Eingabedatendatei automatisch auszuführen, erstellen Sie einen Eventarc-Trigger, der auf Cloud Storage-Ereignisse in dem Bucket reagiert, der die Eingabedatendatei enthält.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf den Namen des Workflows, z. B.
cloud-run-job-workflow
.Klicken Sie auf der Seite Workflowdetails auf
Bearbeiten.Klicken Sie auf der Seite Workflow bearbeiten im Abschnitt Trigger auf Neuen Trigger hinzufügen > Eventarc.
Der Bereich Eventarc-Trigger wird geöffnet.
Geben Sie im Feld Triggername einen Namen für den Trigger ein, z. B.
cloud-run-job-workflow-trigger
.Wählen Sie in der Liste Ereignisanbieter die Option Cloud Storage aus.
Wählen Sie in der Liste Ereignis den Eintrag google.cloud.storage.object.v1.finald aus.
Wählen Sie im Feld Bucket den Bucket mit der Eingabedatendatei aus. Der Bucket-Name hat das Format
input-PROJECT_ID
.Wählen Sie im Feld Dienstkonto das Dienstkonto aus, das Sie zuvor erstellt haben.
Das Dienstkonto dient als Triggeridentität. Sie sollten dem Dienstkonto bereits die folgenden Rollen zugewiesen haben:
- Eventarc-Ereignisempfänger: zum Empfangen von Ereignissen
- Workflows Invoker: zum Ausführen von Workflows
Klicken Sie auf Trigger speichern.
Der Eventarc-Trigger wird jetzt auf der Seite Workflow bearbeiten im Bereich Trigger angezeigt.
Klicken Sie auf Next (Weiter).
Klicken Sie auf Bereitstellen.
gcloud
Erstellen Sie mit dem folgenden Befehl einen Eventarc-Trigger:
gcloud eventarc triggers create cloud-run-job-workflow-trigger \ --location=us \ --destination-workflow=cloud-run-job-workflow \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=input-PROJECT_ID" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID Ihres Google Cloud-ProjektsSERVICE_ACCOUNT_NAME
: der Name des Dienstkontos, das Sie zuvor erstellt haben.
Das Dienstkonto dient als Triggeridentität. Sie sollten dem Dienstkonto bereits die folgenden Rollen zugewiesen haben:
roles/eventarc.eventReceiver
: zum Empfangen von Ereignissenroles/workflows.invoker
: Ausführen von Workflows
Terraform
Verwenden Sie zum Erstellen eines Triggers die Ressource google_eventarc_trigger
und ändern Sie die Datei main.tf
wie im folgenden Beispiel gezeigt.
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Beachten Sie, dass Sie in einem typischen Terraform-Workflow den gesamten Plan auf einmal anwenden. Für die Zwecke dieser Anleitung können Sie jedoch auf eine bestimmte Ressource abzielen. Beispiel:
terraform apply -target="google_eventarc_trigger.default"
Immer wenn eine Datei in den Cloud Storage-Bucket, der die Eingabedatendatei enthält, hochgeladen oder überschrieben wird, wird der Workflow mit dem entsprechenden Cloud Storage-Ereignis als Argument ausgeführt.
Workflow auslösen
Testen Sie das End-to-End-System, indem Sie die Eingabedatendatei in Cloud Storage aktualisieren.
Generieren Sie neue Daten für die Eingabedatei und laden Sie sie an den vom Cloud Run-Job erwarteten Speicherort in Cloud Storage hoch:
base64 /dev/urandom | head -c 100000 >input_file.txt gsutil cp input_file.txt gs://BUCKET_NAME/input_file.txt
Ersetzen Sie
BUCKET_NAME
dabei durch den Namen des Cloud Storage-Buckets.Wenn Sie einen Cloud Storage-Bucket mit Terraform erstellt haben, können Sie den Namen des Buckets mit dem folgenden Befehl abrufen:
gcloud storage buckets list gs://input*
Die Ausführung des Cloud Run-Jobs kann einige Minuten dauern.
Prüfen Sie, ob der Cloud Run-Job wie erwartet ausgeführt wurde. Sehen Sie sich dazu die Jobausführungen an:
gcloud config set run/region us-central1 gcloud run jobs executions list --job=parallel-job
In der Ausgabe sollte eine erfolgreiche Jobausführung angezeigt werden, die darauf hinweist, dass
10/10
Aufgaben abgeschlossen sind.
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 Ressourcen, die Sie in dieser Anleitung erstellt haben:
Löschen Sie den Eventarc-Trigger:
gcloud eventarc triggers delete cloud-run-job-workflow-trigger --location=us
Löschen Sie den Workflow:
gcloud workflows delete cloud-run-job-workflow --location=us-central1
Löschen Sie den Cloud Run-Job:
gcloud run jobs delete parallel-job
Löschen Sie den Cloud Storage-Bucket, der für die Eingabedaten erstellt wurde:
gcloud storage rm --recursive gs://input-PROJECT_ID/
Löschen Sie das Artifact Registry-Repository:
gcloud artifacts repositories delete REPOSITORY --location=us-central1