Recevoir des événements à l'aide de messages Pub/Sub (Terraform)
Ce guide de démarrage rapide explique comment utiliser Terraform pour créer un déclencheur Eventarc qui reçoit des événements directs de Pub/Sub et qui les achemine vers un service Cloud Run. Pour en savoir plus sur l'utilisation de Terraform pour créer des déclencheurs Eventarc, consultez la section Créer un déclencheur à l'aide de Terraform.
Dans ce guide de démarrage rapide, vous allez:
Préparez-vous à déployer Terraform.
Définissez une configuration Terraform qui effectue les opérations suivantes:
- Activer des API
- Créez un compte de service et attribuez-lui les rôles IAM (Identity and Access Management) nécessaires.
- Déployez un service sur Cloud Run en tant que destination d'événement.
- Créez un sujet Pub/Sub en tant que fournisseur d'événements.
- Créer un déclencheur Eventarc.
Appliquez votre configuration Terraform.
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 section 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 Resource Manager and IAM APIs:
gcloud services enable cloudresourcemanager.googleapis.com
iam.googleapis.com -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- 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 Resource Manager and IAM APIs:
gcloud services enable cloudresourcemanager.googleapis.com
iam.googleapis.com -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
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 (
Préparer le déploiement de Terraform
Préparez le déploiement des ressources Terraform en créant un fichier de configuration Terraform. Un fichier de configuration Terraform vous permet de définir l'état final souhaité pour votre infrastructure à l'aide de la syntaxe Terraform.
Si vous utilisez un shell local, installez et configurez Terraform.
Terraform est déjà intégré à l'environnement Cloud Shell. Vous pouvez utiliser Cloud Shell pour déployer vos ressources Terraform sans avoir à installer Terraform.
Dans Cloud Shell ou votre shell local, définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform. Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Remplacez
PROJECT_ID
par l'ID de votre Google Cloud projet.
Notez que les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine). Créez un répertoire et un fichier dans ce répertoire:
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Le nom du fichier doit comporter l'extension .tf
. Par exemple, dans ce guide de démarrage rapide, le fichier est appelé main.tf
.
Définir votre configuration Terraform
Copiez les extraits de code Terraform suivants dans le fichier main.tf
que vous venez de créer. Vous pouvez également copier le code depuis GitHub. (En haut à droite de l'extrait de code, cliquez sur >
Afficher sur GitHub.)
Activer les API
Les exemples Terraform partent généralement du principe que les API requises sont activées dans votre projetGoogle Cloud . Utilisez l'extrait de code suivant pour activer les API nécessaires à ce guide de démarrage rapide:
Créer un compte de service et configurer son accès
Chaque déclencheur Eventarc est associé à un compte de service IAM. Pour suivre ce guide de démarrage rapide, vous devez attribuer les rôles IAM suivants à un compte de service géré par l'utilisateur:
-
Rôle de demandeur Cloud Run (
roles/run.invoker
) -
Rôle d'Diffuseur Pub/SubSub (
roles/pubsub.publisher
)
Utilisez l'extrait de code suivant pour créer un compte de service dédié et lui attribuer des rôles IAM spécifiques pour gérer les événements:
Si vous avez activé l'agent de service 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
) à l'agent de service.
resource "google_project_iam_member" "tokencreator" { project = data.google_project.project.id role = "roles/iam.serviceAccountTokenCreator" member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-pubsub.iam.gserviceaccount.com" }
Déployer un récepteur d'événements sur Cloud Run
Créez un service Cloud Run en tant que destination d'événement pour le déclencheur Eventarc à l'aide de la ressource Terraform google_cloud_run_v2_service
:
Créer un sujet Pub/Sub en tant que fournisseur d'événements
Créez un sujet Pub/Sub à l'aide de la ressource Terraform google_pubsub_topic
:
Créer un déclencheur Eventarc
Créez un déclencheur Eventarc pour écouter les messages Pub/Sub à l'aide de la ressource Terraform google_eventarc_trigger
:
Appliquer Terraform
Utilisez la CLI Terraform pour provisionner l'infrastructure en fonction du fichier de configuration.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade
:terraform init -upgrade
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes:
terraform plan
Corrigez les modifications de la configuration si nécessaire.
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité:terraform apply
En règle générale, vous appliquez l'ensemble de la configuration en une seule fois. Toutefois, vous pouvez également cibler une ressource spécifique. Exemple :
terraform apply -target="google_eventarc_trigger.default"
Après avoir activé les API, la propagation de l'action peut prendre quelques minutes avant que vous puissiez déployer d'autres ressources. Si vous rencontrez un problème, réessayez d'appliquer la configuration Terraform.
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
Vérifier la création des ressources
Vérifiez que le service Cloud Run a été créé:
gcloud run services list --region us-central1
La sortie devrait ressembler à ce qui suit :
SERVICE: hello-events REGION: us-central1 URL: https://hello-events-13335919645.us-central1.run.app LAST DEPLOYED BY: ... LAST DEPLOYED AT: 2024-12-16T15:00:52.606160Z
Vérifiez que le déclencheur Eventarc a bien été créé:
gcloud eventarc triggers list --location us-central1
La sortie devrait ressembler à ce qui suit :
NAME: trigger-pubsub-cloudrun-tf TYPE: google.cloud.pubsub.topic.v1.messagePublished DESTINATION: Cloud Run service: hello-events ACTIVE: Yes LOCATION: us-central1
Générer et afficher un événement de type sujet Pub/Sub.
Vous pouvez générer un événement en publiant un message dans le sujet Pub/Sub. Le déclencheur Eventarc achemine le message vers le service récepteur d'événements déployé sur Cloud Run, et le service consigne le message d'événement.
Recherchez et définissez le sujet Pub/Sub en tant que variable d'environnement :
gcloud config set eventarc/location us-central1 export RUN_TOPIC=$(gcloud eventarc triggers describe trigger-pubsub-cloudrun-tf \ --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!'
Vous avez utilisé Terraform pour déployer un service récepteur d'événements sur Cloud Run et créer un déclencheur Eventarc. Après avoir généré un événement à partir de Pub/Sub, vous pouvez l'afficher dans les journaux Cloud Run.
Effectuer un nettoyage
Une fois que vous avez terminé les tâches décrites dans ce guide de démarrage rapide, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées.
Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes
à la requête :
terraform destroy
Vous pouvez également supprimer votre projet Google Cloud pour éviter que des frais ne vous soient facturés. 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.