Créer un sujet d'importation Azure Event Hubs

Un sujet d'importation Azure Event Hubs vous permet d'ingérer en continu des données à partir d'Azure Event Hubs en tant que source externe et dans Pub/Sub. Vous pouvez ensuite diffuser les données dans l'une des destinations compatibles avec Pub/Sub.

Ce document explique comment créer et gérer des sujets d'importation Azure Event Hubs. Pour créer un sujet standard, consultez Créer un sujet standard.

Pour en savoir plus sur les sujets d'importation, consultez la page À propos des sujets d'importation.

Avant de commencer

Rôles et autorisations requis

Pour obtenir les autorisations nécessaires pour créer et gérer des sujets d'importation Azure Event Hubs, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Pub/Sub (roles/pubsub.editor) sur votre sujet ou 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.

Ce rôle prédéfini contient les autorisations requises pour créer et gérer des sujets d'importation Azure Event Hubs. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour créer et gérer des sujets d'importation Azure Event Hubs:

  • Créez un sujet d'importation : pubsub.topics.create
  • Supprimer un thème d'importation : pubsub.topics.delete
  • Obtenir un sujet d'importation : pubsub.topics.get
  • Lister un sujet d'importation : pubsub.topics.list
  • Publier dans un sujet d'importation : pubsub.topics.publish
  • Mettre à jour un sujet d'importation : pubsub.topics.update
  • Obtenez la stratégie IAM pour un sujet d'importation : pubsub.topics.getIamPolicy
  • Configurez la stratégie IAM pour un sujet d'importation : pubsub.topics.setIamPolicy

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Vous pouvez configurer le contrôle des accès au niveau du projet et au niveau de ressources individuelles.

Configurer une identité fédérée pour accéder à Azure Event Hubs

La fédération d'identité de charge de travail permet aux services Google Cloud d'accéder aux charges de travail exécutées en dehors de Google Cloud. Avec la fédération d'identités, vous n'avez pas besoin de gérer ni de transmettre des identifiants à Google Cloud pour accéder à vos ressources dans d'autres clouds. À la place, vous pouvez utiliser les identités des charges de travail elles-mêmes pour vous authentifier auprès de Google Cloud et accéder aux ressources.

Créer un compte de service dans Google Cloud

Il s'agit d'une étape facultative. Si vous disposez déjà d'un compte de service, vous pouvez l'utiliser dans cette procédure au lieu d'en créer un autre. Si vous utilisez un compte de service existant, consultez la section Enregistrer l'ID unique du compte de service pour l'étape suivante.

Pour les sujets d'importation Azure Event Hubs, Pub/Sub utilise le compte de service comme identité pour accéder aux ressources à partir d'Azure.

Pour en savoir plus sur la création d'un compte de service, y compris sur les conditions préalables, les rôles et autorisations requis, ainsi que les consignes de dénomination, consultez la section Créer des comptes de service. Une fois le compte de service créé, vous devrez peut-être attendre au moins 60 secondes avant de l'utiliser. Ce comportement se produit car les opérations de lecture sont cohérentes à terme. Il peut s'écouler un certain temps avant que le nouveau compte de service devienne visible.

Enregistrer l'ID unique du compte de service

Vous avez besoin d'un ID unique de compte de service pour configurer l'enregistrement d'applications dans Azure.

  1. Dans la console Google Cloud, accédez à la page d'informations sur le compte de service.

    Accéder au compte de service

  2. Cliquez sur le compte de service que vous venez de créer ou celui que vous prévoyez d'utiliser.

  3. Sur la page Détails du compte de service, notez le numéro d'ID unique.

    Vous avez besoin de cet ID dans le workflow pour configurer l'enregistrement d'applications dans Azure.

Ajouter le rôle Créateur de jetons du compte de service au compte de service Pub/Sub

Le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) permet aux comptes principaux de créer des identifiants éphémères pour un compte de service. Ces jetons ou identifiants sont utilisés pour usurper l'identité du compte de service.

Pour plus d'informations sur l'emprunt de l'identité d'un compte de service, consultez la page Emprunter l'identité d'un compte de service.

Vous pouvez également ajouter le rôle Éditeur Pub/Sub (roles/pubsub.publisher) au cours de cette procédure. Pour en savoir plus sur ce rôle et pourquoi vous l'ajoutez, consultez Ajouter le rôle d'éditeur Pub/Sub au compte de service Pub/Sub.

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Cochez la case Inclure les attributions de rôles fournies par Google.

  3. Recherchez le compte de service au format service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Pour ce compte de service, cliquez sur le bouton Modifier le compte principal.

  5. Si nécessaire, cliquez sur Ajouter un autre rôle.

  6. Recherchez et cliquez sur le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator).

  7. Cliquez sur Enregistrer.

Créer un enregistrement d'application avec la fédération d'identité

Pour ingérer des données à partir d'Azure Event Hubs, enregistrez une application auprès de la plate-forme Microsoft Identity et activez la fédération d'identité pour votre compte de service. Cela permet à votre compte de service de s'authentifier auprès d'Azure.

Pour en savoir plus sur l'enregistrement d'une application avec la plate-forme Microsoft Identity, consultez le guide de démarrage rapide sur l'enregistrement d'applications Azure.

  1. Connectez-vous au portail Azure, puis ouvrez la page Microsoft Entra ID.

  2. Dans le volet de navigation, cliquez sur Gérer > Enregistrements d'applications.

  3. Cliquez sur Nouvelle inscription.

  4. Nommez l'application et définissez Types de comptes compatibles sur une valeur autre que Comptes Microsoft personnels uniquement.

  5. Pour enregistrer l'application, cliquez sur Register (Enregistrer).

  6. Ouvrez l'application, puis cliquez sur Gérer > Certificats et secrets.

  7. Cliquez sur Ajouter un identifiant.

  8. Pour configurer des identifiants fédérés, cliquez sur Autre émetteur.

  9. Dans le champ Issuer (Émetteur), saisissez https://accounts.google.com.

  10. Dans le champ Valeur, saisissez l'ID unique de votre compte de service Pub/Sub.

    Vous le trouverez dans Enregistrer l'ID unique du compte de service.

  11. Nommez l'identité fédérée, puis cliquez sur Ajouter.

Attribuer des rôles à l'application enregistrée

Pour permettre à Pub/Sub de lire à partir de votre hub d'événements Azure, accordez les rôles nécessaires à votre application enregistrée.

  1. Connectez-vous au portail Azure et ouvrez votre espace de noms Event Hubs.

    Pour ouvrir un espace de noms, saisissez Event Hubs dans la recherche, puis cliquez sur l'un des espaces de noms.

  2. Dans la barre latérale, cliquez sur Contrôle des accès (IAM).

  3. Cliquez sur Ajouter > Ajouter une attribution de rôle.

  4. Sélectionnez le rôle Récepteur de données Azure Event Hubs, puis cliquez sur Suivant.

    Cela accorde au compte de service Pub/Sub l'accès en lecture à votre hub d'événements Azure.

  5. Cliquez sur + Sélectionner des membres, puis recherchez votre application enregistrée.

  6. Saisissez le nom de l'application enregistrée dans le champ de recherche.

  7. Cliquez sur le nom de votre application, puis sur Sélectionner.

  8. Cliquez sur Examiner et attribuer.

  9. Répétez les étapes 3 à 6, puis ajoutez le rôle Azure Event Hubs Data Sender (Expéditeur de données Azure Event Hubs).

    Ce rôle accorde au compte de service Google Cloud l'autorisation d'extraire des métadonnées de votre hub d'événements Azure.

Pour en savoir plus sur l'attribution de rôles Azure, consultez la page Attribuer des rôles Azure.

Ajouter le rôle d'éditeur Pub/Sub au principal Pub/Sub

Pour activer la publication, vous devez attribuer un rôle d'éditeur au compte de service Pub/Sub afin que Pub/Sub puisse publier dans le sujet d'importation Azure Event Hubs.

Activer la publication à partir de tous les thèmes

Utilisez cette méthode si vous n'avez pas créé de sujets d'importation Azure Event Hubs.

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Cochez la case Inclure les attributions de rôles fournies par Google.

  3. Recherchez le compte de service au format service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Pour ce compte de service, cliquez sur le bouton Modifier le compte principal.

  5. Si nécessaire, cliquez sur Ajouter un autre rôle.

  6. Recherchez et cliquez sur le rôle Éditeur Pub/Sub (roles/pubsub.publisher).

  7. Cliquez sur Enregistrer.

Activer la publication à partir d'un seul sujet

N'utilisez cette méthode que si le sujet d'importation Azure Event Hubs existe déjà.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Exécutez la commande gcloud pubsub topics add-iam-policy-binding :

    gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com" \
       --role="roles/pubsub.publisher"

    Remplacez les éléments suivants :

    • TOPIC_ID: ID du sujet de l'importation Azure Event Hubs.

    • PROJECT_NUMBER : Numéro du projet Pour afficher le numéro de projet, consultez Identifier des projets.

Ajouter le rôle Utilisateur du compte de service au compte de service

Le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) inclut l'autorisation iam.serviceAccounts.actAs, qui permet à un compte principal d'associer un compte de service aux paramètres d'ingestion du sujet d'importation Azure Event Hubs et d'utiliser ce compte de service pour l'identité fédérée.

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Pour le compte principal qui émet les appels de création ou de mise à jour de sujets, cliquez sur le bouton Modifier le compte principal.

  3. Si nécessaire, cliquez sur Ajouter un autre rôle.

  4. Recherchez et cliquez sur Rôle Utilisateur du compte de service (roles/iam.serviceAccountUser).

  5. Cliquez sur Enregistrer.

Utiliser des sujets d'importation Azure Event Hubs

Vous pouvez créer un sujet d'importation ou modifier un sujet existant.

Remarques

  • Créer le sujet et l'abonnement séparément, même en succession rapide, peut entraîner une perte de données. Il existe une courte période pendant laquelle le sujet existe sans abonnement. Si des données sont envoyées au sujet pendant cette période, elles sont perdues. En créant d'abord le sujet, puis l'abonnement, puis en convertissant le sujet en sujet d'importation, vous vous assurez qu'aucun message n'est manqué pendant le processus d'importation.

  • Si vous devez recréer le hub d'événements Azure d'un sujet d'importation existant portant le même nom, vous ne pouvez pas simplement supprimer le hub d'événements Azure et le recréer. Cette action peut invalider la gestion des décalages de Pub/Sub, ce qui peut entraîner une perte de données. Pour limiter ce problème, procédez comme suit:

    • Supprimer le sujet d'importation Pub/Sub
    • Supprimer l'événement Azure
    • Créer le hub d'événements Azure
    • Créer le sujet d'importation Pub/Sub
  • Les données d'un hub d'événements Azure sont toujours lues à partir du décalage le plus ancien.

Créer des sujets d'importation Azure Event Hubs

Pour en savoir plus sur les propriétés associées à un sujet, consultez la section Propriétés d'un sujet.

Assurez-vous d'avoir effectué les procédures suivantes:

Pour créer un sujet d'importation Azure Event Hubs, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Topics (Sujets).

    Accéder aux sujets

  2. Cliquez sur Create topic (Créer un sujet).

  3. Dans le champ ID du sujet, saisissez un ID pour votre sujet d'importation Azure Event Hubs. Pour en savoir plus sur l'attribution de noms aux sujets, consultez les consignes d'attribution de noms.

  4. Sélectionnez Ajouter un abonnement par défaut.

  5. Sélectionnez Activer l'ingestion.

  6. Pour la source d'ingestion, sélectionnez Azure Event Hubs.

  7. Saisissez les informations suivantes :

    • Groupe de ressources: nom du groupe de ressources Azure contenant l'espace de noms Azure Event Hubs que vous prévoyez d'ingérer dans Pub/Sub.

    • Espace de noms Event Hubs: nom de l'espace de noms Azure Event Hubs contenant le hub d'événements Azure que vous prévoyez d'ingérer dans Pub/Sub.

    • Event Hub: nom du hub d'événements Azure que vous prévoyez d'ingérer dans Pub/Sub.

    • ID client: ID de l'application (client) de l'application enregistrée dans Azure, qui contient l'identité fédérée du compte de service Google Cloud. Cette valeur doit être un UUID. Pour en savoir plus, consultez la page d'enregistrement des applications Azure.

    • ID de locataire: ID d'annuaire (locataire) du locataire propriétaire du hub d'événements Azure que vous prévoyez d'ingérer dans Pub/Sub. Cette valeur doit être un UUID. Pour trouver votre ID de locataire, consultez la page Obtenir des ID d'abonnement et de locataire Azure.

    • Subscription ID (ID d'abonnement) : ID de l'abonnement propriétaire du groupe de ressources Azure Event Hubs. Cette valeur doit être un UUID. Pour trouver votre ID d'abonnement, accédez à la page Obtenir des ID d'abonnement et de locataire Azure.

    • Compte de service:compte de service que vous avez créé dans Créer un compte de service dans Google Cloud.

  8. Conservez les valeurs par défaut dans les autres champs.

  9. Cliquez sur Create topic (Créer un sujet).

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Exécutez la commande gcloud pubsub topics create :

    gcloud pubsub topics create TOPIC_ID \
      --azure-event-hubs-ingestion-resource-group RESOURCE_GROUP \
      --azure-event-hubs-ingestion-namespace NAMESPACE \
      --azure-event-hubs-ingestion-event-hub EVENT_HUB \
      --azure-event-hubs-ingestion-client-id CLIENT_ID \
      --azure-event-hubs-ingestion-tenant-id TENANT_ID \
      --azure-event-hubs-ingestion-subscription-id SUBSCRIPTION_ID \
      --azure-event-hubs-ingestion-service-account SERVICE_ACCOUNT

    Remplacez les éléments suivants :

  • TOPIC_ID: nom ou ID de votre sujet Pub/Sub.
  • RESOURCE_GROUP: nom du groupe de ressources Azure Event Hubs contenant l'espace de noms Azure Event Hubs que vous prévoyez d'ingérer dans Pub/Sub.
  • NAMESPACE: nom de l'espace de noms Azure Event Hubs contenant l'événement Azure que vous prévoyez d'ingérer dans Pub/Sub.
  • EVENT_HUB: nom du hub d'événements Azure que vous prévoyez d'ingérer dans Pub/Sub.
  • CLIENT_ID: ID (client) de l'application enregistrée dans Azure qui contient l'identité fédérée du compte de serviceGoogle Cloud . Cette valeur doit être un UUID. Pour en savoir plus, consultez la page d'inscription d'applications Azure.
  • TENANT_ID: ID du répertoire (locataire) du locataire propriétaire du hub d'événements Azure que vous prévoyez d'ingérer dans Pub/Sub. Cette valeur doit être un UUID. Pour trouver votre ID de locataire, accédez à la page Azure Get subscription and tenant IDs (Obtenir des ID d'abonnement et de locataire Azure).
  • SUBSCRIPTION_ID: ID de l'abonnement propriétaire du hub d'événements Azure que vous prévoyez d'ingérer dans Pub/Sub. Cette valeur doit être un UUID. Pour trouver votre ID d'abonnement, consultez la page Obtenir des ID d'abonnement et de locataire Azure.
  • SERVICE_ACCOUNT: compte de service que vous avez créé dans Créer un compte de service dans Google Cloud

Go

Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Go.

Pour vous authentifier auprès de Pub/Sub, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/pubsub"
)

func createTopicWithAzureEventHubsIngestion(w io.Writer, projectID, topicID, resourceGroup, namespace, eventHub, clientID, tenantID, subID, gcpSA string) error {
	// projectID := "my-project-id"
	// topicID := "my-topic"

	// // Azure Event Hubs ingestion settings.
	// resourceGroup := "resource-group"
	// namespace := "namespace"
	// eventHub := "event-hub"
	// clientID := "client-id"
	// tenantID := "tenant-id"
	// subID := "subscription-id"
	// gcpSA := "gcp-service-account"

	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %w", err)
	}
	defer client.Close()

	cfg := &pubsub.TopicConfig{
		IngestionDataSourceSettings: &pubsub.IngestionDataSourceSettings{
			Source: &pubsub.IngestionDataSourceAzureEventHubs{
				ResourceGroup:     resourceGroup,
				Namespace:         namespace,
				EventHub:          eventHub,
				ClientID:          clientID,
				TenantID:          tenantID,
				SubscriptionID:    subID,
				GCPServiceAccount: gcpSA,
			},
		},
	}
	t, err := client.CreateTopicWithConfig(ctx, topicID, cfg)
	if err != nil {
		return fmt.Errorf("CreateTopic: %w", err)
	}
	fmt.Fprintf(w, "Created topic with azure event hubs ingestion: %v\n", t)
	return nil
}

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Java.

Pour vous authentifier auprès de Pub/Sub, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.cloud.pubsub.v1.TopicAdminClient;
import com.google.pubsub.v1.IngestionDataSourceSettings;
import com.google.pubsub.v1.Topic;
import com.google.pubsub.v1.TopicName;
import java.io.IOException;

public class CreateTopicWithAzureEventHubsIngestionExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String topicId = "your-topic-id";
    // Azure Event Hubs ingestion settings.
    String resourceGroup = "resource-group";
    String namespace = "namespace";
    String eventHub = "event-hub";
    String clientId = "client-id";
    String tenantId = "tenant-id";
    String subscriptionId = "subscription-id";
    String gcpServiceAccount = "gcp-service-account";

    createTopicWithAzureEventHubsIngestionExample(
        projectId,
        topicId,
        resourceGroup,
        namespace,
        eventHub,
        clientId,
        tenantId,
        subscriptionId,
        gcpServiceAccount);
  }

  public static void createTopicWithAzureEventHubsIngestionExample(
      String projectId,
      String topicId,
      String resourceGroup,
      String namespace,
      String eventHub,
      String clientId,
      String tenantId,
      String subscriptionId,
      String gcpServiceAccount)
      throws IOException {
    try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
      TopicName topicName = TopicName.of(projectId, topicId);

      IngestionDataSourceSettings.AzureEventHubs azureEventHubs =
          IngestionDataSourceSettings.AzureEventHubs.newBuilder()
              .setResourceGroup(resourceGroup)
              .setNamespace(namespace)
              .setEventHub(eventHub)
              .setClientId(clientId)
              .setTenantId(tenantId)
              .setSubscriptionId(subscriptionId)
              .setGcpServiceAccount(gcpServiceAccount)
              .build();
      IngestionDataSourceSettings ingestionDataSourceSettings =
          IngestionDataSourceSettings.newBuilder().setAzureEventHubs(azureEventHubs).build();

      Topic topic =
          topicAdminClient.createTopic(
              Topic.newBuilder()
                  .setName(topicName.toString())
                  .setIngestionDataSourceSettings(ingestionDataSourceSettings)
                  .build());

      System.out.println(
          "Created topic with Azure Event Hubs ingestion settings: " + topic.getAllFields());
    }
  }
}

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Node.js.

Pour vous authentifier auprès de Pub/Sub, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
// const resourceGroup = 'YOUR_RESOURCE_GROUP';
// const namespace = 'YOUR_NAMESPACE';
// const eventHub = 'YOUR_EVENT_HUB';
// const clientId = 'YOUR_CLIENT_ID';
// const tenantId = 'YOUR_TENANT_ID';
// const subscriptionId = 'YOUR_SUBSCRIPTION_ID';
// const gcpServiceAccount = 'ingestion-account@...';

// Imports the Google Cloud client library
const {PubSub} = require('@google-cloud/pubsub');

// Creates a client; cache this for further use
const pubSubClient = new PubSub();

async function createTopicWithAzureEventHubsIngestion(
  topicNameOrId,
  resourceGroup,
  namespace,
  eventHub,
  clientId,
  tenantId,
  subscriptionId,
  gcpServiceAccount
) {
  // Creates a new topic with Azure Event Hubs ingestion.
  await pubSubClient.createTopic({
    name: topicNameOrId,
    ingestionDataSourceSettings: {
      azureEventHubs: {
        resourceGroup,
        namespace,
        eventHub,
        clientId,
        tenantId,
        subscriptionId,
        gcpServiceAccount,
      },
    },
  });
  console.log(
    `Topic ${topicNameOrId} created with Azure Event Hubs ingestion.`
  );
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub Python.

Pour vous authentifier auprès de Pub/Sub, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

from google.cloud import pubsub_v1
from google.pubsub_v1.types import Topic
from google.pubsub_v1.types import IngestionDataSourceSettings

# TODO(developer)
# project_id = "your-project-id"
# topic_id = "your-topic-id"
# resource_group = "your-resource-group"
# namespace = "your-namespace"
# event_hub = "your-event-hub"
# client_id = "your-client-id"
# tenant_id = "your-tenant-id"
# subscription_id = "your-subscription-id"
# gcp_service_account = "your-gcp-service-account"

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_id)

request = Topic(
    name=topic_path,
    ingestion_data_source_settings=IngestionDataSourceSettings(
        azure_event_hubs=IngestionDataSourceSettings.AzureEventHubs(
            resource_group=resource_group,
            namespace=namespace,
            event_hub=event_hub,
            client_id=client_id,
            tenant_id=tenant_id,
            subscription_id=subscription_id,
            gcp_service_account=gcp_service_account,
        )
    ),
)

topic = publisher.create_topic(request=request)

print(f"Created topic: {topic.name} with Azure Event Hubs Ingestion Settings")

C++

Avant d'essayer cet exemple, suivez les instructions de configuration pour C++ du guide de démarrage rapide de Pub/Sub : utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub C++.

Pour vous authentifier auprès de Pub/Sub, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

namespace pubsub = ::google::cloud::pubsub;
namespace pubsub_admin = ::google::cloud::pubsub_admin;
[](pubsub_admin::TopicAdminClient client, std::string project_id,
   std::string topic_id, std::string const& resource_group,
   std::string const& event_hubs_namespace, std::string const& event_hub,
   std::string const& client_id, std::string const& tenant_id,
   std::string const& subscription_id,
   std::string const& gcp_service_account) {
  google::pubsub::v1::Topic request;
  request.set_name(
      pubsub::Topic(std::move(project_id), std::move(topic_id)).FullName());
  auto* azure_event_hubs = request.mutable_ingestion_data_source_settings()
                               ->mutable_azure_event_hubs();
  azure_event_hubs->set_resource_group(resource_group);
  azure_event_hubs->set_namespace_(event_hubs_namespace);
  azure_event_hubs->set_event_hub(event_hub);
  azure_event_hubs->set_client_id(client_id);
  azure_event_hubs->set_tenant_id(tenant_id);
  azure_event_hubs->set_subscription_id(subscription_id);
  azure_event_hubs->set_gcp_service_account(gcp_service_account);

  auto topic = client.CreateTopic(request);
  // Note that kAlreadyExists is a possible error when the library retries.
  if (topic.status().code() == google::cloud::StatusCode::kAlreadyExists) {
    std::cout << "The topic already exists\n";
    return;
  }
  if (!topic) throw std::move(topic).status();

  std::cout << "The topic was successfully created: " << topic->DebugString()
            << "\n";
}

Node.js (TypeScript)

Avant d'essayer cet exemple, suivez les instructions de configuration de Node.js décrites dans le guide de démarrage rapide de Pub/Sub : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.

Pour vous authentifier auprès de Pub/Sub, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
// const resourceGroup = 'YOUR_RESOURCE_GROUP';
// const namespace = 'YOUR_NAMESPACE';
// const eventHub = 'YOUR_EVENT_HUB';
// const clientId = 'YOUR_CLIENT_ID';
// const tenantId = 'YOUR_TENANT_ID';
// const subscriptionId = 'YOUR_SUBSCRIPTION_ID';
// const gcpServiceAccount = 'ingestion-account@...';

// Imports the Google Cloud client library
import {PubSub} from '@google-cloud/pubsub';

// Creates a client; cache this for further use
const pubSubClient = new PubSub();

async function createTopicWithAzureEventHubsIngestion(
  topicNameOrId: string,
  resourceGroup: string,
  namespace: string,
  eventHub: string,
  clientId: string,
  tenantId: string,
  subscriptionId: string,
  gcpServiceAccount: string
) {
  // Creates a new topic with Azure Event Hubs ingestion.
  await pubSubClient.createTopic({
    name: topicNameOrId,
    ingestionDataSourceSettings: {
      azureEventHubs: {
        resourceGroup,
        namespace,
        eventHub,
        clientId,
        tenantId,
        subscriptionId,
        gcpServiceAccount,
      },
    },
  });
  console.log(
    `Topic ${topicNameOrId} created with Azure Event Hubs ingestion.`
  );
}

Si vous rencontrez des problèmes, consultez Résoudre les problèmes d'importation d'un sujet Azure Event Hubs.

Modifier les thèmes d'importation Azure Event Hubs

Pour modifier les paramètres de la source de données d'ingestion d'un sujet d'importation Azure Event Hubs, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Topics (Sujets).

    Accéder aux sujets

  2. Cliquez sur l'article sur l'importation Azure Event Hubs.

  3. Sur la page des détails de l'article, cliquez sur Modifier.

  4. Modifiez les champs que vous souhaitez modifier.

  5. Cliquez sur Mettre à jour.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Exécutez la commande gcloud pubsub topics update avec tous les indicateurs mentionnés dans l'exemple suivant:

    gcloud pubsub topics update TOPIC_ID \
        --azure-event-hubs-ingestion-resource-group RESOURCE_GROUP \
        --azure-event-hubs-ingestion-namespace NAMESPACE \
        --azure-event-hubs-ingestion-event-hub EVENT_HUB \
        --azure-event-hubs-ingestion-client-id CLIENT_ID \
        --azure-event-hubs-ingestion-tenant-id TENANT_ID \
        --azure-event-hubs-ingestion-subscription-id SUBSCRIPTION_ID \
        --azure-event-hubs-ingestion-service-account SERVICE_ACCOUNT

    Remplacez les éléments suivants :

    • TOPIC_ID: nom ou ID de votre sujet Pub/Sub.
    • RESOURCE_GROUP: nom du groupe de ressources Azure Event Hubs contenant l'espace de noms Azure Event Hubs que vous insérez dans Pub/Sub.
    • NAMESPACE: nom de l'espace de noms Azure Event Hubs contenant le hub d'événements Azure que vous insérez dans Pub/Sub.
    • EVENT_HUB: nom du hub d'événements Azure que vous insérez dans Pub/Sub.
    • CLIENT_ID: ID (client) de l'application enregistrée dans Azure qui contient l'identité fédérée du compte de serviceGoogle Cloud . Cette valeur doit être un UUID. Pour en savoir plus, consultez la page d'enregistrement des applications Azure.
    • TENANT_ID: ID du répertoire (locataire) du locataire propriétaire des Azure Event Hubs que vous insérez dans Pub/Sub. Cette valeur doit être un UUID. Pour trouver votre ID de locataire, consultez la page Azure Obtenir les ID d'abonnement et de locataire.
    • SUBSCRIPTION_ID: ID de l'abonnement propriétaire du hub d'événements Azure que vous insérez dans Pub/Sub. Cette valeur doit être un UUID. Pour trouver votre ID d'abonnement, consultez Obtenir les ID d'abonnement et de locataire Azure.
    • SERVICE_ACCOUNT: compte de service que vous avez créé dans Créer un compte de service dans Google Cloud

Quotas et limites

Le débit de l'éditeur pour les sujets d'importation est limité par le quota de publication du sujet. Pour en savoir plus, consultez la section Quotas et limites de Pub/Sub.

Étape suivante