Publier des événements à partir de sources Google

Vous pouvez activer la collecte et la publication d'événements provenant de sources Google pour un bus Eventarc Advanced spécifique en créant une ressource GoogleApiSource.

Les événements provenant de sources Google sont déclenchés directement par un événement non médiatisé, tel que la création d'une fonction Cloud Run ou un changement d'état d'un job Dataflow. Pour en savoir plus, consultez Types d'événements Google compatibles avec Eventarc.

Veuillez noter les points suivants :

  • Par défaut, les événements sont collectés à partir du projet Google Cloud dans lequel la ressource GoogleApiSource existe. Vous pouvez également utiliser la gcloud CLI pour collecter des événements provenant de plusieurs projets appartenant à la même organisation que la ressource GoogleApiSource. Pour en savoir plus, consultez la section Publier des événements à partir de plusieurs projets dans ce document.
  • Vous pouvez publier des événements dans un bus qui se trouve dans un autre Google Cloud projet que celui dans lequel la ressource GoogleApiSource existe. Vous pouvez configurer cette option à l'aide de gcloud CLI ou en envoyant une requête à l'API Eventarc (mais pas via la console Google Cloud ).
  • La limite est d'une ressource GoogleApiSource par projet et par région. Google Cloud

Avant de commencer

Avant de commencer, assurez-vous d'avoir effectué les étapes suivantes :

  1. Si vous utilisez Google Cloud CLI pour exécuter les commandes sur cette page, installez puis initialisez gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update.

  2. Activez l'API Eventarc et l'API Eventarc Publishing :

    Console

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    gcloud

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

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 d'API Google dans un projet Google Cloud spécifique pour un bus Eventarc Advanced particulier.

Vous pouvez activer la publication d'événements provenant de sources Google de différentes manières :

  • Dans la console Google Cloud
  • En utilisant la Google Cloud CLI dans votre terminal ou Cloud Shell
  • en envoyant une requête à l'API Eventarc.

Console

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

    Accéder à Bus

  2. Vous pouvez créer un bus ou, si vous mettez à jour un bus, cliquez sur  Modifier.

  3. Sur la page Modifier le bus, pour ajouter une source de message, cliquez sur Ajouter une source.

    1. Dans le volet Ajouter une source de message, pour le fournisseur de messages de l'API Google, acceptez la valeur par défaut google-api-source ou saisissez un autre nom de source de message.
    2. Cliquez sur Créer.
  4. Cliquez sur Enregistrer.

gcloud

  1. Ouvrez un terminal.

  2. Vous pouvez activer 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=BUS_PROJECT_ID

    Remplacez les éléments suivants :

    • GOOGLE_API_SOURCE_NAME : ID ou identifiant complet de votre ressource GoogleApiSource qui représente un abonnement aux événements de l'API Google pour un bus spécifique
    • BUS_NAME : ID ou identifiant complet du bus auquel vous souhaitez vous abonner pour recevoir les événements de l'API Google.
    • BUS_PROJECT_ID : ID du projet Google Cloud pour le bus

    Facultatif : Vous pouvez également utiliser les options suivantes :

    • --async pour quitter immédiatement la commande, sans attendre la fin de l'opération en cours.
    • --crypto-key pour spécifier le nom complet d'une clé de chiffrement gérée par le client ; si aucune clé n'est spécifiée, Google-owned and managed keys est utilisé.
    • --logging-config pour configurer le niveau de journalisation, qui doit être l'un des suivants : NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. Pour en savoir plus, consultez LogSeverity.

API REST

Pour activer les événements provenant de sources Google, utilisez la méthode projects.locations.googleApiSources.create.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • GOOGLE_API_SOURCE_NAME : nom à afficher de la ressource GoogleApiSource qui représente un abonnement aux événements de l'API Google pour un bus spécifique (par exemple, my_google_source).
  • LABEL_KEY et LABEL_VALUE : facultatifs. Carte de paires clé/valeur de libellés qui vous aident à organiser vos ressources Google Cloud . Pour en savoir plus, consultez Que sont les libellés ?.
  • ANNOTATION_KEY et ANNOTATION_VALUE : facultatifs. Carte de paires clé/valeur d'annotations au format texte libre. Vous pouvez les utiliser pour joindre des informations arbitraires associées à la ressource. Pour en savoir plus, consultez Annotations.
  • DESTINATION : identifiant complet du bus Eventarc Advanced auquel les événements sources Google doivent être publiés au format projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME. Pour en savoir plus, consultez Créer un bus pour acheminer les messages.
  • ENCRYPT_KEY (facultatif) : Clé Cloud KMS que la ressource GoogleApiSource doit utiliser pour le chiffrement des données au format projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Pour en savoir plus, consultez Utiliser des clés de chiffrement gérées par le client.
  • PROJECT_ID : ID du projet Google Clouddans lequel créer la ressource GoogleApiSource.
  • LOCATION : région compatible dans laquelle créer la ressource GoogleApiSource (par exemple, us-central1).
  • LOG_SEVERITY (facultatif) : Gravité minimale de l'événement décrit dans une entrée de journal. Au choix : NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT ou EMERGENCY. La valeur par défaut est NONE. Pour en savoir plus, consultez LogSeverity.

Corps JSON de la requête :

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

Pour envoyer votre requête, développez l'une des options suivantes :

Si la requête aboutit, le corps de la réponse contient une nouvelle instance de Operation :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Les événements provenant de sources Google dans le même projet Google Cloud que la ressourceGoogleApiSourcesont désormais collectés et publiés dans le bus.

Désactiver les événements provenant de sources Google

Pour désactiver la publication d'événements provenant de sources Google dans un projetGoogle Cloud spécifique sur un bus Eventarc Advanced, vous devez supprimer la ressource GoogleApiSource.

Vous pouvez désactiver la publication d'événements provenant de sources Google de différentes manières :

  • Dans la console Google Cloud
  • À l'aide de gcloud CLI dans votre terminal ou Cloud Shell
  • en envoyant une requête à l'API Eventarc.

Console

  1. Dans la console Google Cloud , accédez à la page Eventarc > Détails du bus.

    Accéder aux détails du bus

  2. Cliquez sur Modifier.

  3. Sur la page Modifier le bus, pour supprimer le fournisseur de messages de l'API Google, cliquez sur Supprimer la ressource pour la source de messages google-api-source (ou le nom que vous lui avez donné).

  4. Dans l'invite Supprimer la ressource, cliquez sur Confirmer.

  5. Cliquez sur Enregistrer.

gcloud

  1. Ouvrez un terminal.

  2. Vous pouvez désactiver les événements provenant de sources Google à l'aide de la commande gcloud eventarc google-api-sources delete :

    gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    Remplacez les éléments suivants :

    • GOOGLE_API_SOURCE_NAME : ID ou identifiant complet de la ressource GoogleApiSource
    • REGION : emplacement de la ressource GoogleApiSource

API REST

Pour désactiver les événements provenant de sources Google, utilisez la méthode projects.locations.googleApiSources.delete.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du Google Cloud projet dans lequel la ressource GoogleApiSource est créée.
  • LOCATION : région dans laquelle la ressource GoogleApiSource est créée, par exemple us-central1.
  • GOOGLE_API_SOURCE_NAME : nom de la ressource GoogleApiSource que vous souhaitez supprimer.

Pour envoyer votre requête, développez l'une des options suivantes :

Si la requête aboutit, le corps de la réponse contient une nouvelle instance de Operation :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Les événements provenant de sources Google dans le même projet Google Cloud que la ressource GoogleApiSource supprimée ne sont plus collectés ni publiés.

Publier des événements à partir de plusieurs projets

Pour collecter et publier des événements sources Google provenant de plusieurs projets Google Cloud , vous devez créer une ressource GoogleApiSource. Les projets doivent appartenir à la même organisation que la ressource GoogleApiSource. Pour en savoir plus sur les organisations, consultez la section Hiérarchie des ressources.

Veuillez noter les points suivants :

  • La publication d'événements à partir de plusieurs projets doit être configurée à l'aide de gcloud CLI et ne s'affiche pas dans la console Google Cloud .
  • Si le projet contenant la ressource GoogleApiSource est déplacé vers une autre organisation, la publication d'événements à partir de plusieurs projets ne fonctionnera plus comme prévu. Vous devez mettre à jour ou recréer la ressource GoogleApiSource.

1. Attribuer le rôle IAM approprié à l'agent de service Eventarc

Pour collecter des événements au niveau de l'organisation, utilisez la commande gcloud organizations add-iam-policy-binding pour accorder au compte de service Eventarc le rôle IAM (Identity and Access Management) approprié :

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="SERVICE_AGENT_EMAIL" \
    --role="roles/eventarc.multiProjectEventCollector"

Remplacez les éléments suivants :

  • ORGANIZATION_ID : ID de ressource de votre organisation.
  • SERVICE_AGENT_EMAIL : adresse e-mail de l'agent de service principal Eventarc dans le projet dans lequel vous créez la ressource GoogleApiSource. L'adresse e-mail est au format suivant :

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
    

    Remplacez PROJECT_NUMBER par le numéro de votre projetGoogle 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)'
    

2. Publier à partir de tous les projets ou d'une liste de projets

Pour publier des événements provenant de sources Google dans plusieurs projets, utilisez la commande gcloud eventarc google-api-sources create de l'une des manières suivantes :

  • Publier à partir de tous les projets Google Cloud de la même organisation que la ressource GoogleApiSource :

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --organization-subscription
  • Publiez à partir d'une liste de projets dans la même organisation que la ressource GoogleApiSource : Google Cloud

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --project-subscriptions=LIST_OF_PROJECTS

    Remplacez les éléments suivants :

    • GOOGLE_API_SOURCE_NAME : ID ou identifiant complet de la ressource GoogleApiSource
    • REGION : emplacement de la ressource GoogleApiSource
    • BUS_NAME : ID ou identifiant complet du bus auquel vous souhaitez vous abonner pour recevoir les événements de l'API Google.
    • BUS_PROJECT_ID : ID du projet Google Cloud pour le bus
    • LIST_OF_PROJECTS : liste d'Google Cloud ID ou numéros de projet séparés par une virgule. Vous pouvez combiner des ID et des nombres dans la même liste. Pour publier des événements à partir du projetGoogle Cloud contenant la ressource GoogleApiSource, vous devez inclure explicitement l'ID ou le numéro du projet dans la liste.

Étapes suivantes