Mit Callbacks und Eventarc-Triggern auf Ereignisse warten

Ihr Workflow muss möglicherweise auf einen externen Prozess warten. Sie können HTTP-Callbacks verwenden, um darauf zu warten, dass ein anderer Dienst eine Anfrage an einen Callback-Endpunkt sendet. Diese Anfrage setzt die Ausführung des Workflows fort. Sie können auch mit Abfrage warten.

In dieser Anleitung wird gezeigt, wie Sie mithilfe von HTTP-Callbacks und Eventarc-Triggern auf Ereignisse oder Pub/Sub-Nachrichten warten können, anstatt Polling zu verwenden. Sie können zwar einen Workflow mit Ereignissen oder Pub/Sub-Nachrichten auslösen, möchten die Ausführung aber möglicherweise anhalten, um auf ein anderes Ereignis zu warten, bevor Sie fortfahren. Beispiel: Ein Ereignis löst einen Workflow aus, um einen Prozess zu starten. Der Workflow muss jedoch auf ein anderes Ereignis warten, das signalisiert, dass der Prozess abgeschlossen ist. Sie können dies implementieren, indem Sie einen Workflow von einem anderen Workflow aufrufen lassen.

Firestore-Datenbank erstellen

In Firestore werden Ihre Daten in Dokumenten gespeichert, die Felder enthalten, die wiederum Werten zugeordnet sind. Diese Dokumente werden in Sammlungen gespeichert. Das sind Container für Ihre Dokumente, mit denen Sie Ihre Daten organisieren und Abfragen erstellen können. Weitere Informationen zu Firestore

Beachten Sie, dass jedes Google Cloud Projekt auf eine Firestore-Datenbank beschränkt ist. Führen Sie die folgenden Schritte aus, wenn Sie eine neue Datenbank erstellen müssen.

Console

  1. Rufen Sie in der Google Cloud -Console die Seite „Firestore“ → Erste Schritte auf.

    Erste Schritte

  2. Klicken Sie auf Nativen Modus auswählen.

    Weitere Informationen zum Auswählen des passenden Datenbankmodus sowie einen Funktionsvergleich finden Sie unter Zwischen nativem Modus und Datastore-Modus wechseln.

  3. Wählen Sie in der Liste Standort auswählen die Option nam5 (United States) aus.

    Der Standort gilt sowohl für die Firestore-Datenbank als auch für die App Engine-Anwendung in Ihrem Google Cloud -Projekt. Nachdem Sie die Datenbank erstellt haben, können Sie den Standort nicht mehr ändern.

  4. Klicken Sie auf Datenbank erstellen.

gcloud

Zum Erstellen einer Firestore-Datenbank müssen Sie zuerst eine App Engine-Anwendung erstellen und dann den Befehl gcloud firestore databases create ausführen:

gcloud app create --region=us-central
gcloud firestore databases create --region=us-central

Sie können die us-central is not a valid Firestore location-Warnung ignorieren. App Engine und Firestore unterstützen die gleichen Standorte. Die App Engine-Region us-central (Iowa) ist aber der Firestore-Mehrfachregion nam5 (USA) zugeordnet.

Pub/Sub-Thema erstellen

In dieser Anleitung wird Pub/Sub als Ereignisquelle verwendet. Erstellen Sie ein Pub/Sub-Thema, damit Sie eine Nachricht darin veröffentlichen können. Weitere Informationen zum Erstellen und Verwalten von Themen

Console

  1. Rufen Sie in der Google Cloud Console die Pub/Sub-Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie im Feld Themen-ID den Wert topic-callback ein.

  4. Übernehmen Sie die anderen Standardeinstellungen.

  5. Klicken Sie auf Thema erstellen.

gcloud

Führen Sie den Befehl gcloud pubsub topics create aus, um ein Thema zu erstellen:

gcloud pubsub topics create topic-callback

Cloud Storage-Bucket erstellen

In dieser Anleitung wird Cloud Storage als Ereignisquelle verwendet. Erstellen Sie einen Cloud Storage-Bucket, damit Sie eine Datei darin hochladen können. Weitere Informationen zum Erstellen von Storage-Buckets

Console

  1. Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.

    Cloud Storage aufrufen

  2. Klicken Sie auf  Erstellen.

  3. Geben Sie im Feld Name für den Bucket PROJECT_ID-bucket-callback ein.

    Die Projekt-ID wird im callback-event-sample-Workflow verwendet, um den Bucket zu identifizieren.

  4. Klicken Sie auf Weiter.

  5. Wählen Sie als Standorttyp die Option Region und dann us-central1 (Iowa) aus.

  6. Übernehmen Sie die anderen Standardeinstellungen.

  7. Klicken Sie auf Erstellen.

gcloud

Führen Sie den Befehl gcloud storage buckets create aus, um einen Bucket zu erstellen:

gcloud storage buckets create gs://PROJECT_ID-bucket-callback \
    --location=us-central1

Die Projekt-ID wird im callback-event-sample-Workflow verwendet, um den Bucket zu identifizieren.

Nachdem die Ereignisquellen erstellt wurden, können Sie den Ereignisempfänger-Workflow bereitstellen.

Workflow bereitstellen, der auf Ereignisse wartet

Der Workflow callback-event-listener wird ausgelöst, wenn eine Nachricht in einem Pub/Sub-Thema veröffentlicht oder eine Datei in einen Cloud Storage-Bucket hochgeladen wird. Der Workflow empfängt das Ereignis, ruft die entsprechenden Callback-Details aus der Firestore-Datenbank ab und sendet dann eine HTTP-Anfrage an den Callback-Endpunkt.

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: callback-event-listener.

  4. Wählen Sie in der Liste Region die Option us-central1 aus.

  5. Wählen Sie das Dienstkonto aus, das Sie zuvor erstellt haben.

  6. Klicken Sie auf Weiter.

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

    main:
      params: [event]
      steps:
        - log_event:
            call: sys.log
            args:
              text: ${event}
              severity: INFO
        - init:
            assign:
              - database_root: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/databases/(default)/documents/callbacks/"}
              - event_source_tokens: ${text.split(event.source, "/")}
              - event_source_len: ${len(event_source_tokens)}
              - event_source: ${event_source_tokens[event_source_len - 1]}
              - doc_name: ${database_root + event_source}
        - get_document_for_event_source:
            try:
              call: googleapis.firestore.v1.projects.databases.documents.get
              args:
                name: ${doc_name}
              result: document
            except:
                as: e
                steps:
                    - known_errors:
                        switch:
                        - condition: ${e.code == 404}
                          return: ${"No callbacks for event source " + event_source}
                    - unhandled_exception:
                        raise: ${e}
        - process_callback_urls:
            steps:
              - check_fields_exist:
                  switch:
                  - condition: ${not("fields" in document)}
                    return: ${"No callbacks for event source " + event_source}
                  - condition: true
                    next: processFields
              - processFields:
                  for:
                      value: key
                      in: ${keys(document.fields)}
                      steps:
                          - extract_callback_url:
                              assign:
                                  - callback_url: ${document.fields[key]["stringValue"]}
                          - log_callback_url:
                              call: sys.log
                              args:
                                text: ${"Calling back url " + callback_url}
                                severity: INFO
                          - http_post:
                              call: http.post
                              args:
                                  url: ${callback_url}
                                  auth:
                                      type: OAuth2
                                  body:
                                      event: ${event}
  8. Klicken Sie auf Bereitstellen.

gcloud

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

    touch callback-event-listener.yaml
  2. Kopieren Sie den folgenden Workflow in einem Texteditor in Ihre Quellcodedatei:

    main:
      params: [event]
      steps:
        - log_event:
            call: sys.log
            args:
              text: ${event}
              severity: INFO
        - init:
            assign:
              - database_root: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/databases/(default)/documents/callbacks/"}
              - event_source_tokens: ${text.split(event.source, "/")}
              - event_source_len: ${len(event_source_tokens)}
              - event_source: ${event_source_tokens[event_source_len - 1]}
              - doc_name: ${database_root + event_source}
        - get_document_for_event_source:
            try:
              call: googleapis.firestore.v1.projects.databases.documents.get
              args:
                name: ${doc_name}
              result: document
            except:
                as: e
                steps:
                    - known_errors:
                        switch:
                        - condition: ${e.code == 404}
                          return: ${"No callbacks for event source " + event_source}
                    - unhandled_exception:
                        raise: ${e}
        - process_callback_urls:
            steps:
              - check_fields_exist:
                  switch:
                  - condition: ${not("fields" in document)}
                    return: ${"No callbacks for event source " + event_source}
                  - condition: true
                    next: processFields
              - processFields:
                  for:
                      value: key
                      in: ${keys(document.fields)}
                      steps:
                          - extract_callback_url:
                              assign:
                                  - callback_url: ${document.fields[key]["stringValue"]}
                          - log_callback_url:
                              call: sys.log
                              args:
                                text: ${"Calling back url " + callback_url}
                                severity: INFO
                          - http_post:
                              call: http.post
                              args:
                                  url: ${callback_url}
                                  auth:
                                      type: OAuth2
                                  body:
                                      event: ${event}
  3. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    gcloud workflows deploy callback-event-listener \
        --source=callback-event-listener.yaml \
        --location=us-central1 \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos, das Sie zuvor erstellt haben.

Workflow bereitstellen, der auf Ereignisse wartet

Im callback-event-sample-Workflow werden die Callback-Details in einer Firestore-Datenbank gespeichert, die Ausführung wird angehalten und es wird auf bestimmte Ereignisse gewartet.

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: callback-event-sample.

  4. Wählen Sie in der Liste Region die Option us-central1 aus.

  5. Wählen Sie das Dienstkonto aus, das Sie zuvor erstellt haben.

  6. Klicken Sie auf Weiter.

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

    main:
      steps:
        - init:
            assign:
              - pubsub_topic: topic-callback
              - storage_bucket: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "-bucket-callback"}
        - await_pubsub_message:
            call: await_callback_event
            args:
              event_source: ${pubsub_topic}
            result: pubsub_event
        - await_storage_bucket:
            call: await_callback_event
            args:
              event_source: ${storage_bucket}
            result: storage_event
        - return_events:
            return:
                pubsub_event: ${pubsub_event}
                storage_event: ${storage_event}
    
    await_callback_event:
        params: [event_source]
        steps:
            - init:
                assign:
                  - database_root: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/databases/(default)/documents/callbacks/"}
                  - doc_name: ${database_root + event_source}
                  - execution_id: ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID")}
                  - firestore_key: ${"exec_" + text.split(execution_id, "-")[0]}
            - create_callback:
                call: events.create_callback_endpoint
                args:
                  http_callback_method: POST
                result: callback_details
            - save_callback_url:
                call: googleapis.firestore.v1.projects.databases.documents.patch
                args:
                  name: ${doc_name}
                  updateMask:
                    fieldPaths: ["${firestore_key}"]
                  body:
                    fields:
                      ${firestore_key}:
                        stringValue: ${callback_details.url}
            - log_and_await_callback:
                try:
                  steps:
                    - log_await_start:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Started waiting 1hr for an event from source " + event_source}
                    - await_callback:
                        call: events.await_callback
                        args:
                          callback: ${callback_details}
                          timeout: 3600
                        result: callback_request
                    - log_await_stop:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Stopped waiting for an event from source " + event_source}
                except:
                    as: e
                    steps:
                        - log_error:
                            call: sys.log
                            args:
                                severity: "ERROR"
                                text: ${"Received error " + e.message}
            - delete_callback_url:
                call: googleapis.firestore.v1.projects.databases.documents.patch
                args:
                  name: ${doc_name}
                  updateMask:
                    fieldPaths: ["${firestore_key}"]
            - check_null_event:
                switch:
                  - condition: ${callback_request == null}
                    return: null
            - log_await_result:
                call: sys.log
                args:
                  severity: INFO
                  data: ${callback_request.http_request.body.event}
            - return_event:
                return: ${callback_request.http_request.body.event}
  8. Klicken Sie auf Bereitstellen.

gcloud

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

    touch callback-event-sample.yaml
  2. Kopieren Sie den folgenden Workflow in einem Texteditor in Ihre Quellcodedatei:

    main:
      steps:
        - init:
            assign:
              - pubsub_topic: topic-callback
              - storage_bucket: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "-bucket-callback"}
        - await_pubsub_message:
            call: await_callback_event
            args:
              event_source: ${pubsub_topic}
            result: pubsub_event
        - await_storage_bucket:
            call: await_callback_event
            args:
              event_source: ${storage_bucket}
            result: storage_event
        - return_events:
            return:
                pubsub_event: ${pubsub_event}
                storage_event: ${storage_event}
    
    await_callback_event:
        params: [event_source]
        steps:
            - init:
                assign:
                  - database_root: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/databases/(default)/documents/callbacks/"}
                  - doc_name: ${database_root + event_source}
                  - execution_id: ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID")}
                  - firestore_key: ${"exec_" + text.split(execution_id, "-")[0]}
            - create_callback:
                call: events.create_callback_endpoint
                args:
                  http_callback_method: POST
                result: callback_details
            - save_callback_url:
                call: googleapis.firestore.v1.projects.databases.documents.patch
                args:
                  name: ${doc_name}
                  updateMask:
                    fieldPaths: ["${firestore_key}"]
                  body:
                    fields:
                      ${firestore_key}:
                        stringValue: ${callback_details.url}
            - log_and_await_callback:
                try:
                  steps:
                    - log_await_start:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Started waiting 1hr for an event from source " + event_source}
                    - await_callback:
                        call: events.await_callback
                        args:
                          callback: ${callback_details}
                          timeout: 3600
                        result: callback_request
                    - log_await_stop:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Stopped waiting for an event from source " + event_source}
                except:
                    as: e
                    steps:
                        - log_error:
                            call: sys.log
                            args:
                                severity: "ERROR"
                                text: ${"Received error " + e.message}
            - delete_callback_url:
                call: googleapis.firestore.v1.projects.databases.documents.patch
                args:
                  name: ${doc_name}
                  updateMask:
                    fieldPaths: ["${firestore_key}"]
            - check_null_event:
                switch:
                  - condition: ${callback_request == null}
                    return: null
            - log_await_result:
                call: sys.log
                args:
                  severity: INFO
                  data: ${callback_request.http_request.body.event}
            - return_event:
                return: ${callback_request.http_request.body.event}
  3. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    gcloud workflows deploy callback-event-sample \
        --source=callback-event-sample.yaml \
        --location=us-central1 \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos, das Sie zuvor erstellt haben.

Eventarc-Trigger erstellen, um Pub/Sub-Ereignisse weiterzuleiten

Mit einem Eventarc-Trigger können Sie Ereignisse weiterleiten, indem Sie Filter für den Trigger angeben, einschließlich der Ereignisquelle und des Zielworkflows. Erstellen Sie einen Eventarc-Trigger, um den callback-event-listener-Workflow als Ergebnis der Veröffentlichung einer Nachricht in einem Pub/Sub-Thema auszuführen. Weitere Informationen zum Auslösen eines Workflows

Console

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

    Zu Eventarc

  2. Klicken Sie auf Trigger erstellen.

  3. Geben Sie einen Triggernamen ein.

    Beispiel: trigger-pubsub-events-listener.

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

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

  6. Wählen Sie in der Liste Cloud Pub/Sub-Thema auswählen das Thema aus, das Sie zuvor erstellt haben.

  7. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  8. Wenn Sie dazu aufgefordert werden, weisen Sie dem Pub/Sub-Dienstkonto die Rolle iam.serviceAccountTokenCreator zu.

  9. Wählen Sie das Dienstkonto aus, das Sie zuvor erstellt haben.

  10. Wählen Sie in der Liste Ereignisziel die Option Workflows aus.

  11. Wählen Sie in der Liste Workflow auswählen den Workflow callback-event-listener aus.

  12. Klicken Sie auf Erstellen.

gcloud

Führen Sie den Befehl gcloud eventarc triggers create aus, um einen Trigger zu erstellen:

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

Ereignisse werden transformiert und als Laufzeitargumente an die Workflowausführung übergeben. Es kann bis zu 2 Minuten dauern, bis der neue Trigger aktiv wird.

Eventarc-Trigger erstellen, um Cloud Storage-Ereignisse weiterzuleiten

Mit einem Eventarc-Trigger können Sie Ereignisse weiterleiten, indem Sie Filter für den Trigger angeben, einschließlich der Ereignisquelle und des Zielworkflows. Erstellen Sie einen Eventarc-Trigger, um den Workflow callback-event-listener auszuführen, wenn eine Datei in einen Cloud Storage-Bucket hochgeladen wird. Weitere Informationen zum Auslösen eines Workflows

Console

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

    Zu Eventarc

  2. Klicken Sie auf Trigger erstellen.

  3. Geben Sie einen Triggernamen ein.

    Beispiel: trigger-storage-events-listener.

  4. Wählen Sie im Feld Ereignisanbieter die Option Cloud Storage aus.

  5. Wählen Sie in der Liste Ereignis unter Direkt die Option google.cloud.storage.object.v1.finalized aus.

  6. Suchen Sie in der Liste Bucket nach dem Bucket, den Sie zuvor erstellt haben, und wählen Sie ihn aus.

  7. Akzeptieren Sie in der Liste Region basierend auf Ihrem Cloud Storage-Bucket die Standardeinstellung us-central1 (Iowa).

  8. Wenn Sie dazu aufgefordert werden, weisen Sie dem Pub/Sub-Dienstkonto die Rolle iam.serviceAccountTokenCreator zu.

  9. Wählen Sie das Dienstkonto aus, das Sie zuvor erstellt haben.

  10. Wählen Sie in der Liste Ereignisziel die Option Workflows aus.

  11. Wählen Sie in der Liste Workflow auswählen den Workflow callback-event-listener aus.

  12. Klicken Sie auf Erstellen.

gcloud

Führen Sie den Befehl gcloud eventarc triggers create aus, um einen Trigger zu erstellen:

gcloud eventarc triggers create trigger-storage-events-listener \
    --location=us-central1 \
    --destination-workflow=callback-event-listener \
    --destination-workflow-location=us-central1 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=PROJECT_ID-bucket-callback" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Ereignisse werden transformiert und als Laufzeitargumente an die Workflowausführung übergeben. Es kann bis zu 2 Minuten dauern, bis der neue Trigger aktiv wird.

Primären Workflow ausführen

Bei der Ausführung eines Workflows wird die aktuelle Workflowdefinition ausgeführt, die dem Workflow zugeordnet ist. Führen Sie den Workflow callback-event-sample aus. Dies ist der primäre Workflow. Er wartet auf bestimmte Ereignisse und wird erst fortgesetzt, wenn der sekundäre Workflow die entsprechenden Callback-Anfragen sendet.

Console

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

    Zur Seite "Workflows"

  2. Klicken Sie auf der Seite Workflows auf den Workflow callback-event-sample, um die Detailseite aufzurufen.

  3. Klicken Sie auf der Seite Workflow-Details auf Ausführen.

  4. Klicken Sie noch einmal auf Ausführen.

    Die Workflowausführung wird gestartet. Während der Ausführung sollte der Ausführungsstatus Running und ein Logeintrag ähnlich dem folgenden angezeigt werden: Started waiting 1hr for an event from source topic-callback.

gcloud

Führen Sie den Befehl gcloud workflows run aus, um einen Workflow auszuführen:

gcloud workflows run callback-event-sample \
    --location=us-central1

Die Workflowausführung wird gestartet. Während der Ausführung sollte der Ausführungsstatus in etwa so aussehen:

Waiting for execution [a848a164-268a-449c-b2fe-396f32f2ed66] to complete...working...

Ereignisse generieren und Ausführungsstatus prüfen

Sie können prüfen, ob die Ergebnisse wie erwartet sind, indem Sie Ereignisse generieren, Logeinträge ansehen und den Workflow-Ausführungsstatus prüfen.

Nachricht veröffentlichen

Veröffentlichen Sie eine Nachricht in dem Pub/Sub-Thema, das Sie zuvor erstellt haben.

Console

  1. Rufen Sie in der Google Cloud Console die Pub/Sub-Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf topic-callback.

  3. Klicken Sie auf den Tab Nachrichten.

  4. Klicken Sie auf Nachricht veröffentlichen.

  5. Geben Sie im Feld Nachrichtentext Hello World ein.

  6. Klicken Sie auf Veröffentlichen.

gcloud

Veröffentlichen Sie eine Nachricht mit dem Befehl gcloud pubsub topics publish:

gcloud pubsub topics publish topic-callback \
    --message="Hello World"

Objekt hochladen

Laden Sie eine Datei in den Cloud Storage-Bucket hoch, den Sie zuvor erstellt haben.

Console

  1. Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.

    Buckets aufrufen

  2. Klicken Sie auf den Namen des Buckets, den Sie zuvor erstellt haben.

  3. Führen Sie auf dem Tab Objekte einen der folgenden Schritte aus:

    • Ziehen Sie die gewünschte Datei per Drag-and-drop von Ihrem Desktop oder Dateimanager in den Hauptbereich der Google Cloud Console.

    • Klicken Sie auf Dateien hochladen, wählen Sie die Datei aus, die Sie hochladen möchten, und klicken Sie dann auf Öffnen.

gcloud

Führen Sie den Befehl gcloud storage cp aus, um eine Datei hochzuladen:

gcloud storage cp OBJECT_LOCATION gs://PROJECT_ID-bucket-callback/

Ersetzen Sie OBJECT_LOCATION durch den lokalen Pfad zu Ihrem Objekt. Beispiel: random.txt.

Logeinträge und Ausführungsstatus ansehen

Prüfen Sie, ob der callback-event-sample-Workflow erfolgreich abgeschlossen wurde.

Console

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

    Zur Seite "Workflows"

  2. Klicken Sie auf der Seite Workflows auf den Workflow callback-event-sample, um die Detailseite aufzurufen.

  3. Klicken Sie auf der Seite Workflow-Details auf die entsprechende Ausführungs-ID, um die Details für eine bestimmte Ausführung abzurufen.

    Der Ausführungsstatus sollte Erfolgreich lauten und im Bereich „Ausgabe“ sollten die empfangenen Pub/Sub- und Cloud Storage-Ereignisse angezeigt werden.

gcloud

  1. Filtern Sie die Logeinträge und geben Sie die Ausgabe im JSON-Format zurück:

    gcloud logging read "resource.type=workflows.googleapis.com/Workflow AND textPayload:calling OR textPayload:waiting" \
        --format=json
  2. Suchen Sie nach Logeinträgen wie den folgenden:

    "textPayload": "Stopped waiting for an event from source..."
    "textPayload": "Calling back url https://workflowexecutions.googleapis.com/v1/projects/..."
    "textPayload": "Started waiting 1hr for an event from source..."
    
  3. Prüfen Sie den Status des letzten Ausführungsversuchs:

    gcloud workflows executions wait-last

    Das Ergebnis sollte in etwa so aussehen:

    Using cached execution name: projects/1085953646031/locations/us-central1/workflows/callback-event-sample/executions/79929e4e-82c1-4da1-b068-f828034c01b7
    Waiting for execution [79929e4e-82c1-4da1-b068-f828034c01b7] to complete...done.
    [...]
    state: SUCCEEDED