Pub/Sub-Ereignisse mit einem authentifizierten Cloud Run-Dienst empfangen

In dieser Anleitung erfahren Sie, wie Sie eine containerisierte Anwendung mithilfe eines authentifizierten Cloud Run-Dienstes bereitstellen, der Ereignisse über Pub/Sub empfängt. Pub/Sub ist ein vollständig verwalteter Echtzeit-Messaging-Dienst, mit dem Sie Nachrichten zwischen unabhängigen Anwendungen senden und empfangen können.

Artifact Registry-Standard-Repository erstellen

Erstellen Sie ein Artifact Registry-Standard-Repository zum Speichern des Docker-Container-Images:

gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

Ersetzen Sie REPOSITORY durch einen eindeutigen Namen für das Repository.

Ereignisempfänger für Cloud Run bereitstellen

Stellen Sie einen Cloud Run-Dienst bereit, der den Inhalt eines Ereignisses protokolliert.

  1. Klonen Sie das GitHub-Repository:

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

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

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

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

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git

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

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

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

    Ruby

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

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

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git

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

  2. Wechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält:

    Node.js

    cd nodejs-docs-samples/eventarc/pubsub/

    Python

    cd python-docs-samples/eventarc/pubsub/

    Go

    cd golang-samples/eventarc/pubsub/

    Java

    cd java-docs-samples/eventarc/pubsub/

    Ruby

    cd ruby-docs-samples/eventarc/pubsub/

    C#

    cd dotnet-docs-samples/eventarc/pubsub/
  3. Erstellen Sie den Container und laden Sie ihn in Cloud Build hoch:

    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  4. Stellen Sie das Container-Image in Cloud Run bereit:

    gcloud run deploy ${SERVICE_NAME} \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  5. Geben Sie in die Eingabeaufforderung Nicht authentifizierte Aufrufe für Trigger-PubSub (j/n) zulassen? die Antwort n für „Nein“ ein.

Wenn die Cloud Run-Dienst-URL angezeigt wird, ist die Bereitstellung abgeschlossen.

Eventarc-Trigger erstellen

Wenn eine Nachricht im Pub/Sub-Thema veröffentlicht wird, löst das Ereignis den Cloud Run-Dienst aus.

  1. Erstellen Sie einen Trigger, um Pub/Sub-Nachrichten zu überwachen:

    Neues Pub/Sub-Thema

      gcloud eventarc triggers create ${SERVICE_NAME} \
          --destination-run-service=${SERVICE_NAME} \
          --destination-run-region=${REGION} \
          --location=${REGION} \
          --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Dadurch werden ein neues Pub/Sub-Thema und ein Trigger mit dem Namen trigger-pubsub für das Thema erstellt.

    Vorhandenes Pub/Sub-Thema

      gcloud eventarc triggers create ${SERVICE_NAME} \
          --destination-run-service=${SERVICE_NAME} \
          --destination-run-region=${REGION} \
          --location=${REGION} \
          --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
          --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Google Cloud Projekt-ID
    • TOPIC_ID: die ID des vorhandenen Pub/Sub-Themas.

    Damit wird ein Trigger mit dem Namen trigger-pubsub für das vorhandene Pub/Sub-Thema erstellt.

    Beachten Sie, dass das Erstellen eines Eventarc-Triggers in einem Google Cloud -Projekt möglicherweise zu einer Verzögerung bei der Bereitstellung des Eventarc-Dienst-Agents kommt. Dieses Problem lässt sich normalerweise durch erneutes Erstellen des Triggers beheben. Weitere Informationen finden Sie unter Fehler „Berechtigung verweigert“.

  2. Prüfen Sie, ob der Trigger korrekt erstellt wurde. Der Trigger wird zwar sofort erstellt, es kann jedoch bis zu zwei Minuten dauern, bis ein Trigger vollständig funktioniert.

    gcloud eventarc triggers list --location=${REGION}

    Der Status des zurückgegebenen Triggers sollte ACTIVE: Yes lauten.

Ereignis erstellen und abrufen

Veröffentlichen Sie eine Nachricht in einem Pub/Sub-Thema, um ein Ereignis zu generieren und den Cloud Run-Dienst auszulösen. Der Cloud Run-Dienst protokolliert die Nachrichten in den Dienstlogs.

  1. Suchen Sie das Pub/Sub-Thema und legen Sie es als Umgebungsvariable fest:

    export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \
        --format='value(transport.pubsub.topic)')
  2. Senden Sie eine Nachricht an das Pub/Sub-Thema, um ein Ereignis zu generieren:

    gcloud pubsub topics publish $TOPIC_ID --message "Hello there"

    Das Ereignis wird an den Cloud Run-Dienst gesendet, der die Ereignisnachricht loggt.

  3. So rufen Sie die ereignisbezogenen Logeinträge auf, die von Ihrem Dienst erstellt wurden:

    gcloud logging read 'textPayload: "Hello there!"'

    Der Logeintrag sollte in etwa so aussehen:

    textPayload: 'Hello, Hello there!'

Es kann einige Momente dauern, bis Logs angezeigt werden. Wenn Sie sie nicht sofort sehen, versuchen Sie es nach einer Minute noch einmal.