Crea un argomento di importazione di Azure Event Hubs

Un argomento di importazione di Azure Event Hubs ti consente di importare continuamente i dati da Azure Event Hubs come origine esterna in Pub/Sub. Poi puoi trasmettere i dati in una delle destinazioni supportate da Pub/Sub.

Questo documento spiega come creare e gestire gli argomenti di importazione di Azure Event Hubs. Per creare un argomento standard, consulta Creare un argomento standard.

Per saperne di più sugli argomenti di importazione, consulta Informazioni sugli argomenti di importazione.

Prima di iniziare

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per creare e gestire gli argomenti di importazione di Azure Event Hubs, chiedi all'amministratore di concederti il ruolo IAM Editor Pub/Sub (roles/pubsub.editor) per il tuo argomento o progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e gestire gli argomenti di importazione di Azure Event Hubs. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per creare e gestire gli argomenti di importazione di Azure Event Hubs, sono necessarie le seguenti autorizzazioni:

  • Crea un argomento di importazione: pubsub.topics.create
  • Elimina un argomento di importazione: pubsub.topics.delete
  • Ricevi un argomento di importazione: pubsub.topics.get
  • Elenca un argomento di importazione: pubsub.topics.list
  • Pubblica in un argomento di importazione: pubsub.topics.publish
  • Aggiorna un argomento di importazione: pubsub.topics.update
  • Recupera il criterio IAM per un argomento di importazione: pubsub.topics.getIamPolicy
  • Configura il criterio IAM per un argomento di importazione: pubsub.topics.setIamPolicy

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Puoi configurare il controllo dell'accesso a livello di progetto e di singola risorsa.

Configurare l'identità federata per accedere ad Azure Event Hubs

La federazione delle identità per i workload consente ai Google Cloud servizi di accedere ai workload in esecuzione al di fuori di Google Cloud. Con la federazione delle identità, non è necessario gestire o trasmettere le credenziali per Google Cloud accedere alle risorse in altri cloud. In alternativa, puoi utilizzare le identità dei carichi di lavoro stessi per autenticarti Google Cloud e accedere alle risorse.

Crea un account di servizio in Google Cloud

Questo passaggio è facoltativo. Se hai già un account di servizio, puoi utilizzarlo in questa procedura anziché crearne uno nuovo. Se utilizzi un account di servizio esistente, vai a Registra l'ID univoco dell'account di servizio per il passaggio successivo.

Per gli argomenti di importazione di Azure Event Hubs, Pub/Sub utilizza l'account di servizio come identità per accedere alle risorse da Azure.

Per ulteriori informazioni sulla creazione di un account di servizio, inclusi i prerequisiti, i ruoli e le autorizzazioni richiesti e le linee guida per la denominazione, consulta Creare account di servizio. Dopo aver creato un account di servizio, potrebbe essere necessario attendere almeno 60 secondi prima di utilizzarlo. Questo comportamento si verifica perché le operazioni di lettura sono infine coerenti; può essere necessario del tempo prima che il nuovo account di servizio sia visibile.

Registra l'ID univoco dell'account di servizio

Per configurare la registrazione delle app in Azure, devi disporre di un ID univoco dell'account di servizio.

  1. Nella console Google Cloud, vai alla pagina dei dettagli dell'account di servizio.

    Vai all'account di servizio

  2. Fai clic sull'account di servizio appena creato o su quello che hai intenzione di utilizzare.

  3. Nella pagina Dettagli account di servizio, registra il numero ID univoco.

    L'ID è necessario come parte del flusso di lavoro per configurare la registrazione delle app in Azure.

Aggiungi il ruolo Creatore token account di servizio all'account di servizio Pub/Sub

Il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) consente ai principali di creare credenziali di breve durata per un account di servizio. Questi token o queste credenziali vengono utilizzati per simulare l'identità dell'account di servizio.

Per ulteriori informazioni sull'impersonificazione degli account di servizio, consulta Impersonificazione degli account di servizio.

Puoi anche aggiungere il ruolo Publisher Pub/Sub (roles/pubsub.publisher) durante questa procedura. Per ulteriori informazioni sul ruolo e sul motivo per cui lo aggiungi, consulta Aggiungere il ruolo Publisher Pub/Sub all'account di servizio Pub/Sub.

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Fai clic sulla casella di controllo Includi concessioni di ruoli fornite da Google.

  3. Cerca l'account di servizio con il formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Per questo account di servizio, fai clic sul pulsante Modifica entità.

  5. Se necessario, fai clic su Aggiungi un altro ruolo.

  6. Cerca e fai clic sul ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator).

  7. Fai clic su Salva.

Creare una registrazione dell'app con la federazione delle identità

Per importare i dati da Azure Event Hubs, registra un'applicazione con la piattaforma Microsoft Identity e attiva la federazione delle identità per il tuo account di servizio. In questo modo, il tuo account di servizio potrà autenticarsi su Azure.

Per ulteriori informazioni sulla registrazione di un'applicazione con la piattaforma Microsoft Identity, consulta la guida introduttiva alla registrazione delle app di Azure.

  1. Accedi al portale di Azure e apri la pagina Microsoft Entra ID.

  2. Nel riquadro di navigazione, fai clic su Gestisci > Registrazioni app.

  3. Fai clic su Nuova registrazione.

  4. Assegna un nome all'applicazione e imposta Tipi di account supportati su un valore diverso da Solo account Microsoft personali.

  5. Per registrare l'applicazione, fai clic su Registra.

  6. Apri l'applicazione e fai clic su Gestisci > Certificati e segreti.

  7. Fai clic su Aggiungi credenziale.

  8. Per configurare una credenziale federata, fai clic su Altro emittente.

  9. Nel campo Issuer (Emittente), inserisci https://accounts.google.com.

  10. Per il campo Valore, inserisci l'ID univoco del tuo account di servizio Pub/Sub.

    Puoi trovare questo ID in Registrare l'ID univoco dell'account di servizio.

  11. Assegna un nome all'identità federata e fai clic su Aggiungi.

Concedi le assegnazioni dei ruoli all'app registrata

Per consentire a Pub/Sub di leggere dall'hub di eventi Azure, concedi i ruoli necessari all'app registrata.

  1. Accedi al portale di Azure e apri lo spazio dei nomi di Event Hubs.

    Per aprire uno spazio dei nomi, inserisci Event Hubs nella ricerca e poi fai clic su uno degli spazi dei nomi.

  2. Nella barra laterale, fai clic su Controllo degli accessi (IAM).

  3. Fai clic su Aggiungi > Aggiungi assegnazione del ruolo.

  4. Seleziona il ruolo Azure Event Hubs Data Receiver e poi fai clic su Avanti.

    In questo modo, all'account di servizio Pub/Sub viene concesso l'accesso in lettura al tuo Event Hub di Azure.

  5. Fai clic su +Seleziona membri e cerca la tua app registrata.

  6. Digita il nome dell'app registrata nel campo di ricerca.

  7. Fai clic sul nome dell'app, quindi su Seleziona.

  8. Fai clic su Rivedi e assegna.

  9. Ripeti i passaggi da 3 a 6 e aggiungi il ruolo Azure Event Hubs Data Sender.

    Questo ruolo concede all'account di servizio Google Cloud l'autorizzazione per recuperare i metadati dall'hub eventi Azure.

Per ulteriori informazioni sull'assegnazione dei ruoli Azure, visita la pagina Assegnare i ruoli Azure.

Aggiungi il ruolo Publisher Pub/Sub all'entità Pub/Sub

Per attivare la pubblicazione, devi assegnare un ruolo di publisher all'account di servizio Pub/Sub in modo che Pub/Sub possa pubblicare nell'argomento di importazione di Azure Event Hubs.

Attivare la pubblicazione da tutti gli argomenti

Utilizza questo metodo se non hai creato argomenti di importazione di Azure Event Hubs.

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Fai clic sulla casella di controllo Includi concessioni di ruoli fornite da Google.

  3. Cerca l'account di servizio con il formatoservice-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Per questo account di servizio, fai clic sul pulsante Modifica entità.

  5. Se necessario, fai clic su Aggiungi un altro ruolo.

  6. Cerca e fai clic sul ruolo Publisher Pub/Sub (roles/pubsub.publisher).

  7. Fai clic su Salva.

Attivare la pubblicazione da un singolo argomento

Utilizza questo metodo solo se l'argomento di importazione di Azure Event Hubs esiste già.

  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. Esegui il comando 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"

    Sostituisci quanto segue:

    • TOPIC_ID: l'ID dell'argomento di importazione di Azure Event Hubs.

    • PROJECT_NUMBER: il numero del progetto. Per visualizzare il numero del progetto, consulta Identificazione dei progetti.

Aggiungi il ruolo Utente account di servizio all'account di servizio

Il ruolo Utente account di servizio (roles/iam.serviceAccountUser) include l'autorizzazione iam.serviceAccounts.actAs che consente a un'entità di collegare un account di servizio alle impostazioni di importazione dell'argomento di importazione di Azure Event Hubs e di utilizzarlo per l'identità federata.

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Per l'entità che emette le chiamate di creazione o aggiornamento degli argomenti, fai clic sul pulsante Modifica entità.

  3. Se necessario, fai clic su Aggiungi un altro ruolo.

  4. Cerca e fai clic sul ruolo Utente account di servizio (roles/iam.serviceAccountUser).

  5. Fai clic su Salva.

Utilizzare gli argomenti di importazione di Azure Event Hubs

Puoi creare un nuovo argomento di importazione o modificarne uno esistente.

Considerazioni

  • La creazione separata dell'argomento e della sottoscrizione, anche se eseguita in rapida successione, può comportare la perdita di dati. Esiste un breve periodo di tempo in cui l'argomento esiste senza un abbonamento. Se durante questo periodo vengono inviati dati all'argomento, andranno persi. Se crei prima l'argomento, poi la sottoscrizione e infine converti l'argomento in un argomento di importazione, garantisci che nessun messaggio venga perso durante il processo di importazione.

  • Se devi ricreare l'hub eventi di Azure di un argomento di importazione esistente con lo stesso nome, non puoi semplicemente eliminare l'hub eventi di Azure e ricrearlo. Questa azione può invalidare la gestione dell'offset di Pub/Sub, il che può comportare la perdita di dati. Per attenuare il problema, segui questi passaggi:

    • Elimina l'argomento di importazione Pub/Sub
    • Elimina l'hub eventi di Azure
    • Crea l'hub eventi Azure
    • Crea l'argomento di importazione Pub/Sub
  • I dati di un hub eventi Azure vengono sempre letti dall'offset più antico.

Crea gli argomenti di importazione di Azure Event Hubs

Per saperne di più sulle proprietà associate a un argomento, consulta Proprietà di un argomento.

Assicurati di aver completato le seguenti procedure:

Per creare un argomento di importazione di Azure Event Hubs:

Console

  1. Nella console Google Cloud, vai alla pagina Topic.

    Vai ad Argomenti

  2. Fai clic su Crea argomento.

  3. Nel campo ID argomento, inserisci un ID per l'argomento di importazione di Azure Event Hubs. Per ulteriori informazioni sugli argomenti relativi ai nomi, consulta le linee guida per i nomi.

  4. Seleziona Aggiungi una sottoscrizione predefinita.

  5. Seleziona Attiva importazione.

  6. Per l'origine di importazione, seleziona Azure Event Hubs.

  7. Inserisci i seguenti dettagli:

    • Gruppo di risorse: il nome del gruppo di risorse Azure che contiene lo spazio dei nomi Azure Event Hubs che prevedi di importare in Pub/Sub.

    • Spazio dei nomi degli hub di evento: il nome dello spazio dei nomi di Azure Event Hubs che contiene l'hub di evento Azure che prevedi di importare in Pub/Sub.

    • Event Hub: il nome dell'hub di eventi Azure che prevedi di importare in Pub/Sub.

    • ID client: l'ID applicazione (client) dell'app registrata in Azure che contiene l'identità federata dell'account servizio Google Cloud. Questo valore deve essere un UUID. Per ulteriori informazioni, visita la pagina Registrazione app di Azure.

    • ID tenant: l'ID directory (tenant) del tenant proprietario dell'Event Hub di Azure che prevedi di importare in Pub/Sub. Questo valore deve essere un UUID. Per trovare l'ID tenant, visita la pagina Ottenere gli ID abbonamento e tenant di Azure.

    • ID abbonamento: l'ID abbonamento del proprietario del gruppo di risorse Azure Event Hubs. Questo valore deve essere un UUID. Per trovare il tuo ID abbonamento, visita la pagina Ottenere gli ID abbonamento e tenant di Azure.

    • Account di servizio:l'account di servizio che hai creato in Creare un account di servizio in Google Cloud.

  8. Lascia invariati i valori predefiniti dei campi rimanenti.

  9. Fai clic su Crea argomento.

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. Esegui il comando 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

    Sostituisci quanto segue:

  • TOPIC_ID: il nome o l'ID del tuo argomento Pub/Sub.
  • RESOURCE_GROUP: il nome del gruppo di risorse Azure Event Hubs che contiene lo spazio dei nomi Azure Event Hubs che prevedi di importare in Pub/Sub.
  • NAMESPACE: il nome dello spazio dei nomi di Azure Event Hubs che contiene l'hub di evento Azure che prevedi di importare in Pub/Sub.
  • EVENT_HUB: il nome dell'Event Hub di Azure che prevedi di importare in Pub/Sub.
  • CLIENT_ID: l'ID applicazione (client) dell'app registrata in Azure che contiene l'identità federata dell'account servizioGoogle Cloud . Questo valore deve essere un UUID. Per ulteriori informazioni, visita la pagina Registrazione app di Azure.
  • TENANT_ID: l'ID directory (tenant) del tenant proprietario dell'hub eventi Azure che prevedi di importare in Pub/Sub. Questo valore deve essere un UUID. Per trovare l'ID tenant, consulta la pagina Ottenere gli ID abbonamento e tenant di Azure.
  • SUBSCRIPTION_ID: l'ID abbonamento dell'abbonamento proprietario dell'hub eventi Azure che stai pianificando di importare in Pub/Sub. Questo valore deve essere un UUID. Per trovare l'ID abbonamento, visita la pagina Ottenere gli ID abbonamento e tenant di Azure.
  • SERVICE_ACCOUNT: l'account di servizio che hai creato in Creare un account di servizio in Google Cloud

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.

Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Java.

Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.

Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * 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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Python.

Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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++

Prima di provare questo esempio, segui le istruzioni di configurazione di C++ riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.

Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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)

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.

Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * 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.`
  );
}

Se riscontri problemi, consulta l'articolo Risolvere i problemi di un argomento di importazione di Azure Event Hubs.

Modificare gli argomenti di importazione di Azure Event Hubs

Per modificare le impostazioni dell'origine dati di importazione di un argomento di importazione di Azure Event Hubs:

Console

  1. Nella console Google Cloud, vai alla pagina Topic.

    Vai ad Argomenti

  2. Fai clic sull'argomento di importazione di Azure Event Hubs.

  3. Nella pagina dei dettagli dell'argomento, fai clic su Modifica.

  4. Aggiorna i campi che vuoi modificare.

  5. Fai clic su Aggiorna.

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. Esegui il comando gcloud pubsub topics update con tutti i parametri indicati nell'esempio seguente:

    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

    Sostituisci quanto segue:

    • TOPIC_ID: il nome o l'ID del tuo argomento Pub/Sub.
    • RESOURCE_GROUP: il nome del gruppo di risorse Azure Event Hubs che contiene lo spazio dei nomi Azure Event Hubs che stai importando in Pub/Sub.
    • NAMESPACE: il nome dello spazio dei nomi di Azure Event Hubs che contiene l'hub di evento Azure di cui stai importando i dati in Pub/Sub.
    • EVENT_HUB: il nome dell'hub eventi Azure che stai importando in Pub/Sub.
    • CLIENT_ID: l'ID applicazione (client) dell'app registrata in Azure che contiene l'identità federata dell'account servizioGoogle Cloud . Questo valore deve essere un UUID. Per ulteriori informazioni, consulta la pagina Registrazione app Azure.
    • TENANT_ID: l'ID directory (tenant) del tenant proprietario di Azure Event Hubs che stai importando in Pub/Sub. Questo valore deve essere un UUID. Per trovare l'ID tenant, visita la pagina Ottenere gli ID abbonamento e tenant di Azure.
    • SUBSCRIPTION_ID: l'ID abbonamento dell'abbonamento proprietario dell'hub eventi Azure che stai importando in Pub/Sub. Questo valore deve essere un UUID. Per trovare l'ID abbonamento, consulta Ottenere gli ID abbonamento e tenant di Azure.
    • SERVICE_ACCOUNT: l'account di servizio che hai creato in Creare un account di servizio in Google Cloud

Quote e limiti

Il throughput del publisher per gli argomenti di importazione è vincolato dalla quota di pubblicazione dell'argomento. Per ulteriori informazioni, consulta Quote e limiti di Pub/Sub.

Passaggi successivi