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 :
Déployer un service récepteur d'événements sur Cloud Run.
Créer un déclencheur Eventarc.
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é.
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs:
gcloud services enable run.googleapis.com
logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs:
gcloud services enable run.googleapis.com
logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com - Mettez à jour les composants de Google Cloud CLI :
gcloud components update
- Connectez-vous à votre compte :
gcloud auth login
- 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
-
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 guide de démarrage rapide, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Administrateur Cloud Run (
roles/run.admin
) -
Administrateur Eventarc (
roles/eventarc.admin
) -
Accesseur de vues de journaux (
roles/logging.viewAccessor
) -
Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin
) -
Diffuseur Pub/Sub (
roles/pubsub.publisher
) -
Administrateur de compte de service (
roles/iam.serviceAccountAdmin
) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) -
Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Administrateur Cloud Run (
- 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 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
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 recevra et consignera les événements à l'aide d'une image prédéfinie, us-docker.pkg.dev/cloudrun/container/hello
:
gcloud run deploy helloworld-events-pubsub-quickstart \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--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.
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 CloudTOPIC_ID
: 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.
Vérifiez que le déclencheur a bien été créé :
gcloud eventarc triggers list --location=us-central1
Le fichier
events-pubsub-trigger
est listé 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.
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)')
Envoyer un message au sujet Pub/Sub pour générer un événement :
gcloud pubsub topics publish $RUN_TOPIC --message "Hello World!"
L'événement est envoyé au service Cloud Run, qui consigne le message d'événement.
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 'jsonPayload.message: "Received event of type google.cloud.pubsub.topic.v1.messagePublished"'
Recherchez une entrée de journal semblable à ceci :
jsonPayload: ... message: 'Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World!'
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
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées.
Vous pouvez :
Supprimer le déclencheur Eventarc.
Le sujet Pub/Sub associé est également supprimé.
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.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Si vous envisagez d'explorer plusieurs tutoriels et guides de démarrage rapide, réutiliser des projets peut vous aider à ne pas dépasser les limites de quotas des projets.