Publier et recevoir des événements en créant un bus et un abonnement (console)

Ce guide de démarrage rapide explique comment publier et recevoir des messages d'événement en créant un bus Eventarc Advanced et en vous abonnant à votre Google CloudProjet.

  • Un bus vous permet de centraliser le flux de messages dans votre système et agit comme un routeur. Il reçoit des messages d'événements provenant d'une source de messages ou publiés par un fournisseur, et les évalue en fonction d'un enregistrement.

  • Un enregistrement identifie un abonnement à un bus spécifique et définit les critères de correspondance pour les messages, ce qui les achemine vers une ou plusieurs destinations.

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

  1. Créez un sous-réseau et activez l'accès privé à Google.

  2. créer un rattachement de réseau.

  3. Créez un dépôt standard Artifact Registry.

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

  5. Créez un bus Eventarc Advanced.

  6. Créez une inscription Eventarc Advanced.

  7. Publiez un message d'événement sur le bus.

  8. Afficher les données d'événement dans les journaux Cloud Run.

Vous pouvez suivre la plupart des étapes de ce guide de démarrage rapide dans la console Google Cloud. Pour effectuer toutes les étapes à l'aide de la Google Cloud CLI, consultez Publier et recevoir des événements en créant un bus et un abonnement (gcloud CLI).

Avant de commencer

Les contraintes de sécurité définies par votre organisation peuvent vous empêcher d'effectuer les étapes suivantes. Pour en savoir plus sur la résolution des problèmes, consultez Développer des applications dans un environnement Google Cloud limité.

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.

    Enable the APIs

  8. Certaines étapes de ce guide de démarrage rapide nécessitent que vous utilisiez la CLI gcloud :
    1. Configurez gcloud CLI dans l'un des environnements de développement suivants :

      Cloud Shell

      Pour utiliser un terminal en ligne avec gcloud CLI déjà configuré, activez Cloud Shell :

      En bas de la page, une session Cloud Shell démarre et affiche une invite de ligne de commande. L'initialisation de la session peut prendre quelques secondes.

      Shell local

      Pour utiliser un environnement de développement local, procédez comme suit :

      1. Installez gcloud CLI.
      2. Initialisez gcloud CLI.
    2. Sélectionnez votre projet Google Cloud:
      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

    3. Mettez à jour les composants gcloud :
      gcloud components update
    4. Connectez-vous à votre compte :
      gcloud auth login
    5. Définissez la variable de configuration utilisée dans ce guide de démarrage rapide:
      REGION=us-central1
  9. 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).

    Notez que par défaut, les autorisations Cloud Build incluent des autorisations permettant d'importer et de télécharger des artefacts Artifact Registry.

    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:

    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.

  10. Attribuez des rôles au projet au compte de service Compute Engine par défaut. Ces rôles sont nécessaires pour créer et déployer votre image de conteneur.
    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à IAM

    2. Pour modifier les rôles du compte de service s'il dispose déjà de rôles sur la ressource, recherchez une ligne contenant le compte principal.

      ou

      Pour attribuer des rôles au compte de service lorsqu'il n'en a aucun sur la ressource, cliquez sur Accorder l'accès, puis saisissez l'identifiant du compte de service Compute Engine par défaut au format suivant:

      PROJECT_NUMBER-compute@developer.gserviceaccount.com

      Remplacez PROJECT_NUMBER par votre numéro de projet Google Cloud. Vous trouverez le numéro de votre projet sur la page Bienvenue de la console Google Cloud.

    3. Cliquez sur Modifier le compte principal sur la ligne correspondante.
    4. Cliquez sur Ajouter un rôle ou sur Ajouter un autre rôle.
    5. Dans la liste Sélectionner un rôle, filtrez et sélectionnez les rôles suivants :
    6. Cliquez sur Enregistrer.
  11. Par défaut, seuls les propriétaires de projet, les éditeurs de projet, ainsi que les administrateurs et les demandeurs Cloud Run peuvent appeler les services Cloud Run. Pour configurer l'authentification, attribuez le rôle Demandeur Cloud Run à un compte de service sur votre Google Cloud projet. À des fins de test, vous allez associer ce compte de service à un pipeline Eventarc Advanced pour représenter l'identité du pipeline.
    1. Dans la console Google Cloud, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Cliquez sur Créer un compte de service.
    3. Saisissez un nom de compte de service.
    4. Cliquez sur Créer et continuer.
    5. Dans la liste Sélectionner un rôle, définissez un filtre sur le rôle Demandeur Cloud Run, puis sélectionnez-le.
    6. Cliquez sur OK.

    Notez que vous pouvez configurer les utilisateurs autorisés à accéder à votre service Cloud Run de deux manières:

    • Accordez l'autorisation de sélectionner des comptes de service ou des groupes pour autoriser l'accès au service. Toutes les requêtes doivent comporter un en-tête d'autorisation HTTP contenant un jeton OpenID Connect signé par Google pour l'un des comptes de service autorisés. C'est ainsi que l'accès est configuré dans ce guide de démarrage rapide.
    • Accordez l'autorisation à allUsers pour autoriser l'accès non authentifié.

    Pour en savoir plus, consultez la section Contrôle des accès pour Cloud Run.

Créer un sous-réseau et activer l'accès privé à Google

Sauf si vous créez une règle d'administration qui l'interdit, les nouveaux Google Cloud projets démarrent avec un réseau cloud privé virtuel (VPC) par défaut (un réseau VPC en mode automatique) qui possède un sous-réseau dans chaque région. Les sous-réseaux sont associés à des plages d'adresses IP.

Étant donné que vous acheminez des messages vers une destination Cloud Run à l'aide d'une adresse DNS, vous devez activer l'Accès privé à Google sur le sous-réseau utilisé dans l'association réseau. Sinon, l'adresse DNS ne peut pas être résolue. Pour en savoir plus sur la mise en réseau privée et Cloud Run, consultez la page Recevoir des requêtes provenant de réseaux VPC.

Créez un sous-réseau dans le réseau par défaut de votre projet et activez l'accès privé à Google:

  1. Dans la console Google Cloud, accédez à la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Dans la liste des réseaux VPC, cliquez sur le nom par défaut.

  3. Sur la page Détails du réseau VPC, cliquez sur l'onglet Sous-réseaux.

  4. Cliquez sur Ajouter un sous-réseau.

  5. Dans le volet Ajouter un sous-réseau, procédez comme suit:

    1. Saisissez un nom (par exemple, my-subnet).
    2. Dans la liste Région, sélectionnez us-central1.
    3. Saisissez une plage d'adresses IPv4 principale pour le sous-réseau (par exemple, 10.8.0.0/24).
    4. Dans la section Accès privé à Google, sélectionnez Activé.
    5. Acceptez toutes les autres valeurs par défaut.
    6. Cliquez sur Ajouter.

Les plages d'adresses IP des sous-réseaux doivent être uniques et ne pas se chevaucher dans un réseau VPC et un réseau VPC appairé. Pour en savoir plus sur les types de sous-réseaux et les plages de sous-réseaux valides, consultez la section Sous-réseaux.

Créer un rattachement de réseau

Un rattachement de réseau est une ressource qui permet à un réseau VPC producteur d'établir des connexions à un réseau VPC consommateur. Pour publier des événements, Eventarc Advanced utilise le rattachement de réseau afin d'établir une connexion au point de terminaison hébergé dans un réseau VPC.

Créez un rattachement de réseau dans le même réseau et la même région que le point de terminaison de destination de l'événement, qui accepte automatiquement les connexions de n'importe quelle interface Private Service Connect qui fait référence au rattachement de réseau:

  1. Dans Google Cloud Console, accédez à Private Service Connect.

    Accéder à Private Service Connect

  2. Cliquez sur l'onglet Rattachements de réseau.

  3. Cliquez sur Créer un rattachement de réseau.

  4. Saisissez un nom (par exemple, my-network-attachment).

  5. Dans la liste Réseau, sélectionnez par défaut.

  6. Dans la liste Région, sélectionnez us-central1 (Iowa).

  7. Dans la liste Sous-réseau, sélectionnez le sous-réseau que vous avez créé précédemment.

  8. Cliquez sur Accepter automatiquement les connexions pour tous les projets.

  9. Cliquez sur Créer un rattachement de réseau.

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

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

  1. Dans la console Google Cloud, accédez à la page Dépôts.

    Accédez aux dépôts.

  2. Cliquez sur Créer un dépôt.

  3. Saisissez un nom (par exemple, my-repo).

    Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.

  4. Dans le champ Format du dépôt, sélectionnez Docker.

  5. Dans la liste Région, sélectionnez us-central1 (Iowa).

  6. Acceptez toutes les autres valeurs par défaut.

  7. Cliquez sur Créer.

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

Déployez un service Cloud Run qui consigne le contenu d'un événement. Ce service n'est accessible qu'à partir des réseaux VPC du même projet, et l'URL du service n'est pas accessible directement, car le service n'autorise que des appels authentifiés.

  1. Dans votre terminal, clonez le dépôt GitHub:

    git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
  2. Accédez au répertoire contenant l'exemple de code Cloud Run :

    cd eventarc-samples/eventarc-advanced-quickstart/
  3. Créez une image de conteneur Docker et transférez-la vers votre dépôt:

    gcloud builds submit \
        --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1

    Remplacez REPOSITORY par le nom de votre dépôt Artifact Registry.

  4. Déployez l'image de conteneur dans Cloud Run :

    1. Dans Google Cloud Console, accédez à la page Cloud Run.

      Accédez à Cloud Run

    2. Cliquez sur Déployer un conteneur > Service.

    3. Sélectionnez Déployer une révision à partir d'une image de conteneur existante.

    4. Pour URL de l'image du conteneur, cliquez sur Sélectionner pour spécifier l'image de conteneur Artifact Registry que vous avez créée précédemment.

    5. Vous pouvez éventuellement modifier le nom du service, par exemple en le remplaçant par my-service.

    6. Dans la liste Région, sélectionnez us-central1 (Iowa).

    7. Dans Authentification, sélectionnez Exiger l'authentification.

    8. Pour Entrée, sélectionnez Interne.

    9. Acceptez toutes les autres valeurs par défaut.

    10. Cliquez sur Create (Créer) et patientez jusqu'à la fin du déploiement.

Créer un bus Eventarc Advanced

Un bus reçoit des messages d'événements provenant d'une source de messages ou publiés par un fournisseur, et agit en tant que routeur de messages.

Pour en savoir plus, consultez la section Créer un bus pour acheminer les messages.

.
  1. Dans la console Google Cloud, accédez à la page Eventarc > Bus.

    Accéder à "Bus"

  2. Cliquez sur Créer un bus.

  3. Sur la page Créer un bus, procédez comme suit:

    1. Saisissez un Nom de bus (par exemple, my-bus).
    2. Dans la liste Région, sélectionnez us-central1 (Iowa).
  4. Acceptez toutes les autres valeurs par défaut.

  5. Cliquez sur Créer.

Créer une inscription Eventarc Advanced

Un enregistrement détermine les messages à acheminer vers une destination et spécifie également le pipeline utilisé pour configurer une destination pour les messages d'événement.

Pour en savoir plus, consultez la section Créer une inscription pour recevoir des événements.

Lorsque vous utilisez la console Google Cloud, vous pouvez créer un enregistrement et un pipeline simultanément.

  1. Pour créer une inscription, dans la console Google Cloud, accédez à la page Eventarc > Pipelines.

    Accéder à la page Pipelines

  2. Cliquez sur Create pipeline (Créer un pipeline).

  3. Dans le volet Détails du pipeline, procédez comme suit:

    1. Saisissez un nom de pipeline, par exemple my-pipeline.
    2. Dans la liste Région, sélectionnez us-central1 (Iowa). Le pipeline doit être créé dans la même région que le bus.
    3. Acceptez toutes les autres valeurs par défaut.
    4. Cliquez sur Continuer.
  4. Dans le volet Inscriptions, procédez comme suit:

    1. Cliquez sur Ajouter une inscription.
    2. Saisissez un Enrollment name (Nom d'enregistrement), par exemple my-enrollment.
    3. Dans la liste Bus Eventarc Advanced, sélectionnez le bus que vous avez créé précédemment.
    4. Dans le champ Expression CEL, écrivez une expression d'évaluation à l'aide du CEL. Exemple :

      message.type == "hello-world-type"

    5. Cliquez sur OK.

    6. Cliquez sur Continuer.

    7. Dans le volet Médiation des événements, cliquez de nouveau sur Continuer.

  5. Dans le volet Destination, procédez comme suit:

    1. Dans la liste Type de destination, sélectionnez Service Cloud Run (via HTTP), puis le service Cloud Run que vous avez créé précédemment.

    2. Dans la liste Rattachement de réseau, sélectionnez le rattachement de réseau que vous avez créé précédemment.

    3. Cochez la case Enable authentication (Activer l'authentification).

      1. Dans la liste En-tête d'authentification, sélectionnez Jeton OIDC.

      2. Dans la liste Compte de service, sélectionnez le compte de service que vous avez créé précédemment et qui appellera votre service de destination. Cette adresse e-mail de compte de service permet de générer le jeton OIDC.

  6. Cliquez sur Créer.

Publier un message d'événement sur le bus

Pour publier directement un message sur votre bus, vous pouvez utiliser la commande gcloud beta eventarc message-buses publish ou envoyer une requête à l'API REST Eventarc Publishing. Pour en savoir plus, consultez la section Publier des événements directement.

Le message doit être au format CloudEvents, une spécification permettant d'uniformiser la description des données d'événement. L'élément data correspond à la charge utile de votre événement. Tout fichier JSON valide peut être placé dans ce champ. Pour en savoir plus sur les attributs de contexte CloudEvents, consultez la section Format d'événement.

Publiez un événement sur votre bus Eventarc Advanced à l'aide de la gcloud CLI et d'un --event-data et d'autres indicateurs d'attributs d'événement:

gcloud beta eventarc message-buses publish BUS_NAME \
    --event-data='{"key": "hello-world-data"}' \
    --event-id=hello-world-id-1234 \
    --event-source=hello-world-source \
    --event-type=hello-world-type \
    --event-attributes="datacontenttype=application/json" \
    --location=$REGION

Vous pouvez également publier un événement sur votre bus Eventarc Advanced en tant que message JSON à l'aide de la gcloud CLI et d'un indicateur --json-message:

gcloud beta eventarc message-buses publish BUS_NAME \
    --location=$REGION \
    --json-message='{"id": "hello-world-id-1234", "type":
 "hello-world-type", "source":
 "hello-world-source", "specversion": "1.0", "data":
 {"key": "hello-world-data"}}'

Une fois l'événement publié, vous devriez recevoir le message "Événement publié avec succès".

Afficher les données d'événement dans les journaux Cloud Run

Après avoir publié un événement sur votre bus Eventarc Advanced, vous pouvez consulter les journaux de votre service Cloud Run pour vérifier que l'événement a été reçu comme prévu.

  1. Dans Google Cloud Console, accédez à la page Cloud Run.

    Accédez à Cloud Run

  2. Sur la page Services, cliquez sur le nom de votre service.

  3. Cliquez sur l'onglet Journaux.

  4. Vous pouvez filtrer les entrées de journal et renvoyer la sortie. Par exemple, vous pouvez rechercher hello-world-data.

  5. Recherchez une entrée de journal semblable à ceci :

    2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
    

Vous avez créé un bus et un enregistrement Eventarc Advanced, publié un message d'événement sur le bus et vérifié le résultat attendu dans les journaux du service récepteur d'événements.

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:

  1. Supprimez un sous-réseau VPC.

  2. Supprimez un rattachement de réseau VPC.

  3. Supprimez un dépôt Artifact Registry.

  4. Supprimez un service Cloud Run.

  5. Supprimez les ressources Eventarc Advanced:

    1. Supprimer un enregistrement

    2. Supprimez un pipeline.

    3. Supprimez un bus.

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.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Étape suivante