Cloud Run-Job ausführen, der in Cloud Storage gespeicherte Ereignisdaten verarbeitet


Mit Workflows können Sie einen Cloud Run-Job als Teil eines Workflows ausführen, der eine komplexere Datenverarbeitung durchführt oder ein System vorhandener Jobs orchestriert.

In dieser Anleitung wird gezeigt, wie Sie mithilfe von Workflows einen Cloud Run-Job ausführen, der Ereignisdaten verarbeitet, die in einem Cloud Storage-Bucket gespeichert sind. Wenn Sie die Ereignisnutzlast in einem Cloud Storage-Bucket speichern, können Sie die Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln verschlüsseln. Das ist nicht möglich, wenn Sie die Ereignisdaten als Umgebungsvariablen an den Cloud Run-Job übergeben.

Das folgende Diagramm bietet eine allgemeine Übersicht:

Das Pub/Sub-Ereignis wird vom Eventarc-Trigger an Workflows weitergeleitet und im Cloud Storage-Bucket gespeichert. Cloud Run-Job verarbeitet Ereignisdaten, die im Bucket gespeichert sind.

Lernziele

In dieser Anleitung werden Sie:

  1. Erstellen Sie einen Cloud Run-Job, der Ereignisdaten verarbeitet, die in einem Cloud Storage-Bucket gespeichert sind.
  2. Stellen Sie einen Workflow bereit, der Folgendes ausführt:
    1. Erhält ein Ereignis als Argument.
    2. Schreibt die Ereignisnutzlastdaten in den Cloud Storage-Bucket.
    3. Verwendet den Cloud Run Admin API-Connector, um den Cloud Run-Job auszuführen.
  3. Erstellen Sie ein Pub/Sub-Thema, damit Sie eine Nachricht darin veröffentlichen können. In dieser Anleitung wird ein Pub/Sub-Ereignis als Beispiel dafür verwendet, wie Ereignisse mithilfe von Workflows weitergeleitet und in Cloud Storage gespeichert werden, damit ein Cloud Run-Job die Ereignisdaten verarbeiten kann.
  4. Sie erstellen einen Eventarc-Trigger, der den Workflow ausführt, wenn eine Nachricht in das Pub/Sub-Thema geschrieben wird.
  5. Sie können den Workflow auslösen, indem Sie eine Nachricht an das Pub/Sub-Thema schreiben.

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. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Vorbereitung

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.

Bevor Sie mit dieser Anleitung beginnen, müssen Sie bestimmte APIs aktivieren und ein nutzerverwaltetes Dienstkonto erstellen. Sie müssen dem Dienstkonto die erforderlichen Rollen und Berechtigungen zuweisen, damit Sie Ereignisse mit einem Eventarc-Trigger weiterleiten und einen Workflow ausführen können.

Wenn Sie diese Anleitung mit Cloud Shell ausprobieren, müssen Sie dem Compute Engine-Standarddienstkonto möglicherweise zusätzliche Rollen zuweisen. Weitere Informationen finden Sie in diesem Dokument im Abschnitt Cloud Run-Job erstellen.

Console

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.

    Enable the APIs

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.

    Enable the APIs

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. 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 Dienst-Agent die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) zu. Andernfalls wird diese Rolle standardmäßig zugewiesen:
    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen

    2. Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.
    3. Suchen Sie in der Spalte Name nach dem Cloud Pub/Sub-Dienstkonto und klicken Sie dann in der entsprechenden Zeile auf Hauptkonto bearbeiten.
    4. Klicken Sie entweder auf Rolle hinzufügen oder Weitere Rolle hinzufügen.
    5. Filtern Sie in der Liste Rolle auswählen nach Ersteller von Dienstkonto-Tokens und wählen Sie dann die Rolle aus.
    6. Klicken Sie auf Speichern.
  11. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  12. Cloud Shell unterstützt die Befehlszeilenschritte in dieser Anleitung.

gcloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com compute.googleapis.com run.googleapis.com storage.googleapis.com eventarc.googleapis.com workflows.googleapis.com
  7. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant roles to the service account. Run the following command once for each of the following IAM roles: roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker :

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
      • ROLE: the role to grant
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. 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.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com compute.googleapis.com run.googleapis.com storage.googleapis.com eventarc.googleapis.com workflows.googleapis.com
  13. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant roles to the service account. Run the following command once for each of the following IAM roles: roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker :

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
      • ROLE: the role to grant
  14. 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 zugewiesen:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
  15. 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 Beispielcode verwendet, den Sie auf GitHub finden. Das Bereitstellungsscript erstellt ein Container-Image, um einen Cloud Run-Job zu erstellen. Außerdem wird mit dem Script ein Cloud Storage-Bucket erstellt. Der Cloud Run-Job liest alle im Cloud Storage-Bucket gespeicherten Ereignisdaten und druckt sie dann aus.

  1. Wenn Sie das Bereitstellungsskript in Cloud Shell ausführen und das Compute Engine-Standarddienstkonto nicht die Rolle „Bearbeiter“ hat, weisen Sie dem Compute Engine-Standarddienstkonto die folgenden Rollen für das Projekt zu. Andernfalls können Sie diesen Schritt überspringen und mit dem Klonen des Beispiel-App-Repositories im nächsten Schritt fortfahren.

    1. Weisen Sie die Rolle Artifact Registry-Autor (roles/artifactregistry.writer) zu:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
          --role=roles/artifactregistry.writer

      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)'

    2. Weisen Sie die Rolle Storage Object User (roles/storage.objectUser) zu:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
          --role=roles/storage.objectUser
    3. Weisen Sie die Rolle Logging Logs Writer (roles/logging.logWriter) zu:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
          --role=roles/logging.logWriter
  2. Rufen Sie den Beispielcode ab, indem Sie das Repository der Beispiel-App auf Ihren lokalen Computer klonen:

    git clone https://github.com/GoogleCloudPlatform/workflows-demos.git

    Sie können das Beispiel auch als ZIP-Datei herunterladen.

  3. Wechseln Sie zu dem Verzeichnis, das den Beispielcode enthält:

    cd workflows-demos/cloud-run-jobs-payload-gcs/message-payload-job
  4. Erstellen Sie den Cloud Run-Job, indem Sie das Bereitstellungsskript ausführen:

    ./deploy-job.sh

Das Script erstellt einen Cloud Storage-Bucket mit dem Namen message-payload-PROJECT_ID, wobei PROJECT_ID die ID Ihres Google Cloud-Projekts ist. Außerdem wird ein Cloud Run-Job mit dem Namen message-payload-job erstellt.

Workflow bereitstellen, der den Cloud Run-Job ausführt

Definieren und implementieren Sie einen Workflow, der den gerade erstellten Cloud Run-Job ausführt. Eine Workflowdefinition besteht aus einer Reihe von Schritten, die mit der Workflows-Syntax beschrieben werden.

Der Workflow empfängt ein Ereignis, speichert die Ereignisdaten in einem Cloud Storage-Bucket und führt dann einen Cloud Run-Job aus, um die Ereignisdaten zu verarbeiten.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Workflows auf:

    Zur Seite "Workflows"

  2. Klicken Sie auf Erstellen.

  3. Geben Sie einen Namen für den neuen Workflow ein, z. B. message-payload-workflow.

  4. Wählen Sie eine geeignete Region aus, z. B. us-central1.

  5. Wählen Sie im Feld Dienstkonto das zuvor erstellte Dienstkonto aus.

    Das Dienstkonto dient als Identität des Workflows. Sie sollten dem Dienstkonto bereits die folgenden Rollen zugewiesen haben:

    • Cloud Run Admin: zum Ausführen von Cloud Run-Jobs
    • Log-Autor: zum Schreiben von Logeinträgen
    • Storage Object Creator: zum Erstellen von Objekten in Cloud Storage
  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die Definition für Ihren Workflow ein:

    main:
        params: [event]
        steps:
            - init:
                assign:
                    - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                    - event_bucket: ${"message-payload-" + project_id}
                    - event_file: ${event.id + ".data.json"}
                    - job_name: message-payload-job
                    - job_location: us-central1
            - log_event:
                call: sys.log
                args:
                    data: ${event}
            - write_payload_to_gcs:
                call: http.post
                args:
                    url: ${"https://storage.googleapis.com/upload/storage/v1/b/" + event_bucket + "/o"}
                    auth:
                        type: OAuth2
                    query:
                        name: ${event_file}
                    body:
                        ${event.data}
            - run_job_to_process_payload:
                call: googleapis.run.v1.namespaces.jobs.run
                args:
                    name: ${"namespaces/" + project_id + "/jobs/" + job_name}
                    location: ${job_location}
                    body:
                        overrides:
                            containerOverrides:
                                env:
                                    - name: INPUT_BUCKET
                                      value: ${event_bucket}
                                    - name: INPUT_FILE
                                      value: ${event_file}
                result: job_execution
            - finish:
                return: ${job_execution}
  8. Klicken Sie auf Bereitstellen.

gcloud

  1. Erstellen Sie eine Quellcodedatei für Ihren Workflow:

    touch message-payload-workflow.yaml
  2. Kopieren Sie die folgende Workflowdefinition in message-payload-workflow.yaml:

    main:
        params: [event]
        steps:
            - init:
                assign:
                    - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                    - event_bucket: ${"message-payload-" + project_id}
                    - event_file: ${event.id + ".data.json"}
                    - job_name: message-payload-job
                    - job_location: us-central1
            - log_event:
                call: sys.log
                args:
                    data: ${event}
            - write_payload_to_gcs:
                call: http.post
                args:
                    url: ${"https://storage.googleapis.com/upload/storage/v1/b/" + event_bucket + "/o"}
                    auth:
                        type: OAuth2
                    query:
                        name: ${event_file}
                    body:
                        ${event.data}
            - run_job_to_process_payload:
                call: googleapis.run.v1.namespaces.jobs.run
                args:
                    name: ${"namespaces/" + project_id + "/jobs/" + job_name}
                    location: ${job_location}
                    body:
                        overrides:
                            containerOverrides:
                                env:
                                    - name: INPUT_BUCKET
                                      value: ${event_bucket}
                                    - name: INPUT_FILE
                                      value: ${event_file}
                result: job_execution
            - finish:
                return: ${job_execution}
  3. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    gcloud workflows deploy message-payload-workflow \
        --location=us-central1 \
        --source=message-payload-workflow.yaml \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: Der Name des zuvor erstellten Dienstkontos.
    • PROJECT_ID: die ID Ihres Google Cloud-Projekts

    Das Dienstkonto dient als Identität des Workflows. Sie sollten dem Dienstkonto bereits die folgenden Rollen zugewiesen haben:

    • roles/logging.logWriter: zum Schreiben von Logeinträgen
    • roles/run.admin: zum Ausführen von Cloud Run-Jobs
    • roles/storage.objectCreator: zum Erstellen von Objekten in Cloud Storage

Der Workflow führt Folgendes aus:

  1. init step – Nimmt ein Ereignis als Argument entgegen und legt die erforderlichen Variablen fest.

  2. log_event-Schritt: Erstellt mit der Funktion sys.log einen Logeintrag in Cloud Logging.

  3. write_payload_to_gcs-Schritt: Es wird eine HTTP-POST-Anfrage gestellt und die Ereignisnutzlastdaten werden in eine Cloud Storage-Bucket-Datei geschrieben.

  4. Schritt run_job_to_process_payload: Hier wird die Cloud Run Admin API-Connectormethode googleapis.run.v1.namespaces.jobs.run verwendet, um den Job auszuführen. Der Cloud Storage-Bucket und der Dateiname der Daten werden als Überschreibungsvariablen vom Workflow an den Job übergeben.

  5. finish-Schritt: Gibt Informationen zur Jobausführung als Ergebnis des Workflows zurück.

Pub/Sub-Thema erstellen

Erstellen Sie ein Pub/Sub-Thema, damit Sie eine Nachricht darin veröffentlichen können. Anhand eines Pub/Sub-Ereignisses wird veranschaulicht, wie ein Ereignis mithilfe von Workflows weitergeleitet und in Cloud Storage gespeichert wird, damit ein Cloud Run-Job die Ereignisdaten verarbeiten kann.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie im Feld Themen-ID eine ID für das Thema ein, z. B. message-payload-topic.

  4. Behalten Sie die Option Standardabo hinzufügen bei.

  5. Wählen Sie die anderen Optionen nicht aus.

  6. Klicken Sie auf Erstellen.

gcloud

Führen Sie den Befehl gcloud pubsub topics create aus, um ein Thema mit der ID message-payload-topic zu erstellen:

gcloud pubsub topics create message-payload-topic

Eventarc-Trigger erstellen, um Ereignisse an den Workflow weiterzuleiten

Wenn Sie den Workflow und damit den Cloud Run-Job automatisch ausführen möchten, erstellen Sie einen Eventarc-Trigger, der auf Pub/Sub-Ereignisse reagiert und die Ereignisse an den Workflow weiterleitet. Jedes Mal, wenn eine Nachricht in das Pub/Sub-Thema geschrieben wird, löst das Ereignis die Ausführung des Workflows aus.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Workflows auf:

    Zur Seite "Workflows"

  2. Klicken Sie auf den Namen Ihres Workflows, z. B. message-payload-workflow.

  3. Klicken Sie auf der Seite Workflow-Details auf Bearbeiten.

  4. Klicken Sie auf der Seite Workflow bearbeiten im Bereich Trigger auf Neuen Trigger hinzufügen > Eventarc.

    Der Bereich Eventarc-Trigger wird geöffnet.

  5. Geben Sie im Feld Triggername einen Namen für den Trigger ein, z. B. message-payload-trigger.

  6. Wählen Sie in der Liste Ereignisanbieter die Option Cloud Pub/Sub aus.

  7. Wählen Sie in der Liste Ereignis die Option google.cloud.pubsub.topic.v1.messagePublished aus.

  8. Wählen Sie in der Liste Cloud Pub/Sub-Thema auswählen das zuvor erstellte Pub/Sub-Thema aus.

  9. Wählen Sie im Feld Dienstkonto das zuvor erstellte Dienstkonto aus.

    Das Dienstkonto dient als Identität des Triggers. Sie sollten dem Dienstkonto bereits die folgenden Rollen zugewiesen haben:

    • Eventarc-Ereignisempfänger: zum Empfangen von Ereignissen
    • Workflow-Aufrufer: zum Ausführen von Workflows
  10. Klicken Sie auf Trigger speichern.

    Der Eventarc-Trigger wird jetzt auf der Seite Workflow bearbeiten im Abschnitt Trigger angezeigt.

  11. Klicken Sie auf Weiter.

  12. Klicken Sie auf Bereitstellen.

gcloud

Erstellen Sie einen Eventarc-Trigger mit dem folgenden Befehl:

gcloud eventarc triggers create message-payload-trigger \
    --location=us-central1 \
    --destination-workflow=message-payload-workflow \
    --destination-workflow-location=us-central1 \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/message-payload-topic \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Ersetzen Sie Folgendes:

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • SERVICE_ACCOUNT_NAME: Der Name des zuvor erstellten Dienstkontos.

Das Dienstkonto dient als Identität des Triggers. Sie sollten dem Dienstkonto bereits die folgenden Rollen zugewiesen haben:

  • roles/eventarc.eventReceiver: Ereignisse zu empfangen
  • roles/workflows.invoker: zum Ausführen von Workflows

Workflow auslösen

Testen Sie das End-to-End-System, indem Sie eine Nachricht im Pub/Sub-Thema veröffentlichen und ein Ereignis generieren. Weitere Informationen finden Sie unter Workflow mit Ereignissen oder Pub/Sub-Nachrichten auslösen.

  1. Senden Sie eine Nachricht an das Pub/Sub-Thema, um ein Ereignis zu generieren:

    gcloud pubsub topics publish message-payload-topic --message="Hello World"
    

    Das Ereignis wird an den Workflow weitergeleitet, der die Ereignisnachricht protokolliert, die Ereignisdaten im Cloud Storage-Bucket speichert und den Cloud Run-Job ausführt, um die in Cloud Storage gespeicherten Daten zu verarbeiten. Das kann einen Moment dauern.

  2. Prüfen Sie, ob der Cloud Run-Job wie erwartet ausgeführt wurde, indem Sie sich die Jobausführungen ansehen:

    gcloud run jobs executions list --job=message-payload-job

    In der Ausgabe sollte eine neue Jobausführung angezeigt werden.

  3. Führen Sie den folgenden Befehl aus, um die ereignisbezogenen Logeinträge aufzurufen, die durch das Auslösen des Workflows erstellt wurden:

    gcloud logging read "resource.type=cloud_run_job AND textPayload:Payload"
    
  4. Suchen Sie nach einem Logeintrag wie dem folgenden:

    textPayload: "Payload: {'message': {'data': 'SGVsbG8gV29ybGQ=', 'messageId': '8834108235224238',\
    \ 'publishTime': '2023-09-20T17:07:52.921Z'}, 'subscription': 'projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741'}"
    ...
    resource:
    labels:
      job_name: message-payload-job
      location: us-central1
      project_id: MY_PROJECT
    type: cloud_run_job
    textPayload: Processing message payload gs://message-payload-MY_PROJECT/8254002311197919.data.json
    
  5. Sie können die Ereignisdaten im Cloud Storage-Bucket-Objekt prüfen, um zu bestätigen, dass die Ergebnisse wie erwartet sind.

    1. Rufen Sie den Namen Ihres Buckets ab:

      gcloud storage ls

      Die Ausgabe sieht in etwa so aus:

      gs://message-payload-PROJECT_ID/

    2. Objekte in Ihrem Bucket auflisten:

      gcloud storage ls gs://message-payload-PROJECT_ID/** --recursive

      Die Ausgabe sollte in etwa so aussehen:

      gs://message-payload-PROJECT_ID/OBJECT_ID.data.json

      Notieren Sie sich die OBJECT_ID, die Sie im nächsten Schritt benötigen.

    3. So laden Sie das Objekt in Ihrem Bucket als Datei herunter:

      gcloud storage cp gs://message-payload-PROJECT_ID/OBJECT_ID.data.json message-event.txt

      Ersetzen Sie OBJECT_ID durch die im vorherigen Schritt zurückgegebene ID.

    4. Öffnen Sie die Datei message-event.txt in einem Texteditor. Der Ereignistext, der in die Datei geschrieben wird, sollte in etwa so aussehen:

      {
        "message": {
          "data": "SGVsbG8gV29ybGQ=",
          "messageId": "8254002311197919",
          "publishTime": "2023-09-20T16:54:29.312Z"
        },
        "subscription": "projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741"
      }
      

      Beachten Sie, dass wenn Sie den Datenwert von SGVsbG8gV29ybGQ= aus seinem Base64-Format decodieren, Hello World“ zurückgegeben wird.

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:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Anleitungsressourcen löschen

Löschen Sie die in dieser Anleitung erstellten Ressourcen:

  1. Pub/Sub-Thema löschen.

  2. Den Eventarc-Trigger löschen.

  3. Löschen Sie den Workflow „Workflows“.

  4. Löschen Sie den Cloud Run-Job.

  5. Löschen Sie den Cloud Storage-Bucket.

Nächste Schritte