Publier des événements à partir d'une source Google

Vous pouvez activer la collecte et la publication d'événements provenant de sources Google. Pour en savoir plus, consultez Publier des événements à partir de sources Google.

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 y inscrivant dans votre projet Google Cloud.

  • Un bus vous permet de centraliser le flux de messages dans votre système et sert de routeur. Il reçoit les messages d'événement 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 fait acheminer en conséquence vers une ou plusieurs destinations.

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éez un bus Eventarc Advanced.

  3. Activez les événements provenant de sources Google.

  4. Créez une inscription Eventarc Advanced.

  5. Publiez un message d'événement dans le bus en créant un workflow.

  6. Affichez les données d'événement dans les journaux Cloud Run.

Vous pouvez suivre ce guide de démarrage rapide dans 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. Install the Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. 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.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com
  8. Install the Google Cloud CLI.

  9. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  10. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  11. 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.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com
  14. Mettez à jour les composants gcloud :
    gcloud components update
  15. Connectez-vous à votre compte :
    gcloud auth login
  16. Définissez la variable de configuration utilisée dans ce guide de démarrage rapide :
    REGION=REGION

    Remplacez REGION par un emplacement compatible pour le bus (par exemple, us-central1).

  17. 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 avec des rôles personnalisés ou d'autres rôles prédéfinis.

  18. Attribuez les rôles suivants au compte de service Compute Engine par défaut du projet. Ces rôles sont nécessaires pour créer et déployer votre image de conteneur :
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/artifactregistry.writer
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/logging.logWriter
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/storage.objectUser

    Remplacez PROJECT_NUMBER par le numéro de votre 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)'
  19. Par défaut, seuls les propriétaires et les éditeurs de projets, 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 (run.invoker) sur votre projet Google Cloud à un compte de service :
    1. Créez un compte de service. À des fins de test, vous allez associer ce compte de service à un pipeline Eventarc Advanced pour représenter l'identité du pipeline.
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner à votre compte de service.
    2. Attribuez le rôle IAM roles/run.invoker au compte de service :
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/run.invoker

    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 Contrôle des accès pour Cloud Run.

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

    Déployez un service Cloud Run en tant que destination d'événement qui consigne le contenu d'un événement. D'autres destinations d'événements sont acceptées, comme un sujet Pub/Sub, des workflows ou un point de terminaison HTTP. Pour en savoir plus, consultez Fournisseurs et destinations d'événements.

    1. 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 Artifact Registry (par exemple, my-repo).

    2. Clonez le dépôt GitHub.

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

      cd eventarc-samples/eventarc-advanced-quickstart/
    4. 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
    5. Déployez l'image de conteneur dans Cloud Run :

      gcloud run deploy SERVICE_NAME \
          --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \
          --platform managed \
          --ingress all \
          --no-allow-unauthenticated \
          --region=$REGION

      Remplacez SERVICE_NAME par le nom de votre service, par exemple my-service.

      Veuillez noter les points suivants :

      • L'indicateur --platform définit la plate-forme cible, en l'occurrence une version entièrement gérée de Cloud Run.

      • Le paramètre d'entrée all autorise toutes les requêtes, y compris celles provenant directement d'Internet vers l'URL run.app. Pour en savoir plus, consultez Restreindre l'entrée réseau pour Cloud Run.

      • L'indicateur --no-allow-unauthenticated configure le service pour qu'il n'autorise que les appels authentifiés.

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

    6. Copiez et enregistrez l'URL du service Cloud Run, car vous l'utiliserez lors d'une étape ultérieure.

    Créer un bus Eventarc Advanced

    Un bus reçoit les messages d'événement d'une source de messages ou publiés par un fournisseur, et sert de routeur de messages.

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

    Créez un bus Eventarc Advanced dans votre projet à l'aide de la commande gcloud eventarc message-buses create :

    gcloud eventarc message-buses create BUS_NAME \
        --location=$REGION

    Remplacez BUS_NAME par l'ID de votre bus ou par un nom complet, par exemple my-bus.

    Activer les événements provenant de sources Google

    Pour publier des événements à partir de sources Google, vous devez créer une ressource GoogleApiSource. Cette ressource représente un abonnement aux événements de l'API Google pour un bus Eventarc Advanced spécifique dans un projet et une région Google Cloud donnés.

    Activez les événements provenant de sources Google à l'aide de la commande gcloud eventarc google-api-sources create :

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=PROJECT_ID \
        --location=$REGION

    Remplacez GOOGLE_API_SOURCE_NAME par l'ID de votre ressource GoogleApiSource ou par un nom complet, par exemple my-google-api-source.

    Tous les types d'événements Google compatibles envoyés directement depuis une source Google sont désormais collectés et publiés dans votre bus.

    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 Créer un enregistrement pour recevoir des événements.

    Lorsque vous utilisez la gcloud CLI, vous créez d'abord un pipeline, puis un enregistrement :

    1. Créez un pipeline à l'aide de la commande gcloud eventarc pipelines create :

      gcloud eventarc pipelines create PIPELINE_NAME \
          --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
          --location=$REGION

      Remplacez les éléments suivants :

      • PIPELINE_NAME : ID du pipeline ou nom complet (par exemple, my-pipeline).
      • CLOUD_RUN_SERVICE_URL : URL complète de votre service Cloud Run (par exemple, https://SERVICE_NAME-abcdef-uc.a.run.app). Il s'agit de la destination de vos messages d'événement.

      Notez que la clé google_oidc_authentication_service_account spécifie une adresse e-mail de compte de service utilisée pour générer un jeton OIDC.

    2. Créez un enregistrement à l'aide de la commande gcloud eventarc enrollments create :

      gcloud eventarc enrollments create ENROLLMENT_NAME \
          --cel-match=MATCH_EXPRESSION \
          --destination-pipeline=PIPELINE_NAME \
          --message-bus=BUS_NAME \
          --message-bus-project=PROJECT_ID \
          --location=$REGION

      Remplacez les éléments suivants :

      • ENROLLMENT_NAME : ID de l'enregistrement ou nom complet, par exemple my-enrollment.
      • MATCH_EXPRESSION : expression de correspondance pour cet enregistrement à l'aide de CEL. Par exemple, pour publier des messages d'événement chaque fois qu'un workflow Workflows est créé, utilisez l'expression suivante :

        "message.type == 'google.cloud.workflows.workflow.v1.created'"
        

    Publier un message d'événement dans le bus en créant un workflow

    Workflows est une plate-forme d'orchestration entièrement gérée qui exécute des services dans un ordre que vous définissez : un workflow. Créez un workflow pour générer un type d'événement compatible à partir d'une source Google.

    1. Dans votre répertoire d'accueil, créez un fichier appelé myWorkflow.yaml.

    2. Copiez le workflow suivant et collez-le dans le nouveau fichier, puis enregistrez-le :

      - getCurrentTime:
          call: http.get
          args:
            url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam
          result: currentTime
      - readWikipedia:
          call: http.get
          args:
            url: https://en.wikipedia.org/w/api.php
            query:
              action: opensearch
              search: ${currentTime.body.dayOfWeek}
          result: wikiResult
      - returnResult:
          return: ${wikiResult.body[1]}
      

      Ce workflow transmet le jour actuel de la semaine en tant que terme de recherche à l'API Wikipédia. Une liste d'articles Wikipédia associés est renvoyée.

    3. Déployez le workflow et associez-le au compte de service spécifié à l'aide de la commande gcloud workflows deploy :

      gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \
          --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
          --location=$REGION

    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. Filtrez les entrées de journal et renvoyez la sortie à l'aide de la commande gcloud logging read :

      gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
      
    2. Recherchez une entrée de journal semblable à ceci :

      insertId: 689644c30004cde066603b3a
      labels:
        instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab
      logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr
      receiveTimestamp: '2025-08-08T18:41:07.632226222Z'
      resource:
        labels:
        ...
        type: cloud_run_revision
      textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created'
      timestamp: '2025-08-08T18:41:07.314848Z'
      

    Vous avez créé un bus et une inscription Eventarc Advanced, activé la publication d'événements à partir de sources Google, créé un workflow pour générer un type d'événement compatible à partir d'un fournisseur Google, puis 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 dépôt Artifact Registry.

    2. Supprimez un service Cloud Run.

    3. Supprimez un workflow Workflows.

    4. Supprimez les ressources Eventarc Advanced :

      1. Supprimer un enregistrement

      2. Supprimez un pipeline.

      3. Supprimer 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.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    Étapes suivantes