Recevoir des événements à l'aide de messages Pub/Sub (gcloud CLI)

Ce guide de démarrage rapide explique comment déployer un service Cloud Run non authentifié qui reçoit des événements à l'aide de Pub/Sub.

Dans le cadre de ce guide démarrage rapide, vous allez effectuer les étapes suivantes :

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

  2. Créer un déclencheur Eventarc.

  3. Publier un message dans un sujet Pub/Sub pour générer un événement et l'afficher dans les journaux Cloud Run.

Avant de commencer

Les contraintes de sécurité définies par votre organisation peuvent vous empêcher d'effectuer les étapes suivantes. Pour obtenir des informations de dépannage, consultez la page Développer des applications dans un environnement Google Cloud limité.

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Installez Google Cloud CLI.
  3. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  4. Créer ou sélectionner un projet Google Cloud

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID
    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID
  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activer les API Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, and Eventarc :

    gcloud services enable run.googleapis.com logging.googleapis.com cloudbuild.googleapis.com pubsub.googleapis.com eventarc.googleapis.com
  7. Installez Google Cloud CLI.
  8. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  9. Créer ou sélectionner un projet Google Cloud

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID
    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID
  10. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  11. Activer les API Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, and Eventarc :

    gcloud services enable run.googleapis.com logging.googleapis.com cloudbuild.googleapis.com pubsub.googleapis.com eventarc.googleapis.com
  12. Mettez à jour les composants de Google Cloud CLI :
    gcloud components update
  13. Connectez-vous à votre compte :
    gcloud auth login
  14. Définissez les variables de configuration utilisées dans ce guide de démarrage rapide :
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
    
  15. Si vous êtes le créateur du projet, vous disposez du rôle de base Propriétaire (roles/owner). Par défaut, ce rôle Identity and Access Management (IAM) inclut les autorisations nécessaires pour accéder à la plupart des ressources Google Cloud. Vous pouvez ignorer cette étape.

    Si vous n'êtes pas le créateur du projet, les autorisations requises doivent être accordées au compte principal approprié sur le projet. Par exemple, un compte principal peut être un compte Google (pour les utilisateurs finaux) ou un compte de service (pour les applications et les charges de travail de calcul). Pour en savoir plus, consultez la page Rôles et autorisations pour la destination de votre événement.

    Autorisations requises

    Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

    Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

  16. Si vous avez activé l'agent de service Cloud Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) au compte de service géré par Google pour accepter les requêtes push Pub/Sub authentifiées. Sinon, ce rôle est attribué par défaut :
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
  17. Remplacez PROJECT_NUMBER par votre numéro de projet Google Cloud. Vous pouvez trouver le numéro de votre projet sur la page Bienvenue de la console Google Cloud ou en exécutant la commande suivante :

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'

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

Déployez un service Cloud Run qui reçoit et consigne les événements.

  1. Clonez le dépôt :

    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 gcr.io/$(gcloud config get-value project)/events-pubsub
    
  4. Déployez l'image de conteneur dans Cloud Run :

    gcloud run deploy helloworld-events-pubsub-quickstart \
        --image gcr.io/$(gcloud config get-value project)/events-pubsub \
        --allow-unauthenticated
    

Lorsque l'URL du service s'affiche, cela signifie que le déploiement est terminé.

Créer un déclencheur Eventarc

Le déclencheur d'événements envoie des messages au service récepteur d'événements déployé sur Cloud Run lorsqu'un message est publié dans le sujet Pub/Sub.

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

    Nouveau sujet Pub/Sub

    gcloud eventarc triggers create events-pubsub-trigger \
        --destination-run-service=helloworld-events-pubsub-quickstart \
        --destination-run-region=us-central1 \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
    

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

    Sujet Pub/Sub existant

    gcloud eventarc triggers create events-pubsub-trigger \
        --destination-run-service=helloworld-events-pubsub-quickstart \
        --destination-run-region=us-central1 \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • TOPIC_ID correspond à l'ID du sujet Pub/Sub existant.

    Cela crée un déclencheur nommé events-pubsub-trigger 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éé :

    gcloud eventarc triggers list --location=us-central1
    

    events-pubsub-trigger est répertorié avec une destination qui est le service Cloud Run, helloworld-events-pubsub-quickstart.

Générer et afficher un événement de type sujet Pub/Sub.

Vous pouvez générer un événement Eventarc en publiant un message dans un sujet Pub/Sub.

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

    export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \
        --format='value(transport.pubsub.topic)')
    
  2. Envoyer un message au sujet Pub/Sub pour générer un événement :

    gcloud pubsub topics publish $RUN_TOPIC --message "Runner"
    

    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 et créées par votre service, exécutez la commande suivante :

    gcloud logging read 'textPayload: "Hello, Runner!"'
    
  4. Recherchez une entrée de journal semblable à ceci :

    "textPayload": "Hello, Runner! ID: 7479199264356846"
    

Félicitations ! Vous venez de déployer un service récepteur d'événements sur Cloud Run, de créer un déclencheur Eventarc, de générer un événement à partir de Pub/Sub et de l'afficher dans les journaux Cloud Run.

Effectuer un nettoyage

Bien que Cloud Run ne facture pas un service inutilisé, il se peut que des frais vous soient toujours facturés pour le stockage de l'image de conteneur dans Container Registry, les ressources Eventarc et les messages Pub/Sub.

Vous pouvez supprimer votre image, supprimer le sujet Pub/Sub et supprimer l'abonnement Pub/Sub. Pour supprimer le déclencheur Eventarc :

gcloud eventarc triggers delete events-pubsub-trigger

Vous pouvez également supprimer votre projet Google Cloud pour éviter des frais. La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources utilisées dans ce projet.

Supprimez un projet Google Cloud :

gcloud projects delete PROJECT_ID

Étapes suivantes