Recevoir des événements Pub/Sub à l'aide d'un service Cloud Run avec authentification

Ce tutoriel explique comment déployer une application conteneurisée à l'aide d'un service Cloud Run authentifié qui reçoit des événements à l'aide de Pub/Sub. Pub/Sub est un service de messagerie en temps réel entièrement géré qui vous permet d'envoyer et de recevoir des messages entre différentes applications.

Créer un dépôt standard Artifact Registry

Créez un dépôt standard Artifact Registry pour stocker votre image de conteneur :

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

Remplacez REPOSITORY par un nom unique pour le dépôt.

Déployer un récepteur d'événements sur Cloud Run

Déployez un service Cloud Run qui consigne le contenu d'un événement.

  1. Clonez le dépôt GitHub.

    Node.js

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

    Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

    Python

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

    Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

    Go

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

    Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

    Java

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

    Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

    Ruby

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

    Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

    C#

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

    Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

  2. Accédez au répertoire contenant l'exemple de code Cloud Run :

    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. Créez le conteneur et importez-le dans Cloud Build :

    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  4. Déployez l'image de conteneur dans Cloud Run :

    gcloud run deploy ${SERVICE_NAME} \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
  5. Lorsque l'invite Allow unauthenticated invocations to trigger-pubsub (y/N)? (Autoriser les appels non authentifiés à déclencher-pubsub (y/N) ?) apparaît, répondez n pour "Non".

Lorsque l'URL du service Cloud Run s'affiche, le déploiement est terminé.

Créer un déclencheur Eventarc

Lorsqu'un message est publié dans le sujet Pub/Sub, l'événement déclenche le service Cloud Run.

  1. Créez un déclencheur pour écouter les messages Pub/Sub :

    Nouveau sujet Pub/Sub

      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
    

    Cela crée un sujet Pub/Sub et un déclencheur associé nommé trigger-pubsub.

    Sujet Pub/Sub existant

      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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • TOPIC_ID : ID du sujet Pub/Sub existant

    Cela crée un déclencheur nommé trigger-pubsub pour le sujet Pub/Sub existant.

    Notez que lorsque vous créez un déclencheur Eventarc pour la première fois dans un projet Google Cloud , le provisionnement de l'agent de service Eventarc peut prendre quelques instants. Ce problème peut généralement être résolu en essayant à nouveau de créer le déclencheur. Pour en savoir plus, consultez Erreurs d'autorisation refusée.

  2. Vérifiez que le déclencheur a bien été créé. Notez que, bien que votre déclencheur soit créé immédiatement, il peut falloir jusqu'à deux minutes pour qu'il soit pleinement opérationnel.

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

    L'état du déclencheur renvoyé doit être ACTIVE: Yes.

Générer et afficher un événement

Publiez un message dans un sujet Pub/Sub pour générer un événement et déclencher le service Cloud Run. Le service Cloud Run consigne les messages dans les journaux de service.

  1. Recherchez et définissez le sujet Pub/Sub en tant que variable d'environnement :

    export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \
        --format='value(transport.pubsub.topic)')
  2. Envoyez un message au sujet Pub/Sub pour générer un événement :

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

    L'événement est envoyé au service Cloud Run, qui consigne le message d'événement.

  3. Pour afficher les entrées de journal liées aux événements créées par votre service, procédez comme suit :

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

    L'entrée de journal doit être semblable à ceci :

    textPayload: 'Hello, Hello there!'

L'affichage des journaux peut nécessiter quelques instants. S'ils n'apparaissent pas immédiatement, patientez une minute et vérifiez de nouveau.