Crie um tópico de importação do Azure Event Hubs

Um tópico de importação do Azure Event Hubs permite-lhe ingerir continuamente dados do Azure Event Hubs como uma origem externa e no Pub/Sub. Em seguida, pode transmitir os dados para qualquer um dos destinos suportados pelo Pub/Sub.

Este documento mostra como criar e gerir tópicos de importação do Azure Event Hubs. Para criar um tópico padrão, consulte o artigo Crie um tópico padrão.

Para mais informações sobre tópicos de importação, consulte o artigo Acerca dos tópicos de importação.

Antes de começar

Funções e autorizações necessárias

Para receber as autorizações de que precisa para criar e gerir tópicos de importação do Azure Event Hubs, peça ao seu administrador para lhe conceder a função do IAM de editor do Pub/Sub (roles/pubsub.editor) no seu tópico ou projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para criar e gerir tópicos de importação do Azure Event Hubs. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para criar e gerir tópicos de importação do Azure Event Hubs:

  • Crie um tópico de importação: pubsub.topics.create
  • Elimine um tópico de importação: pubsub.topics.delete
  • Obtenha um tópico de importação: pubsub.topics.get
  • Indique um tópico de importação: pubsub.topics.list
  • Publicar num tópico de importação: pubsub.topics.publish and pubsub.serviceAgent
  • Atualize um tópico de importação: pubsub.topics.update
  • Obtenha a Política IAM para um tópico de importação: pubsub.topics.getIamPolicy
  • Configure a política IAM para um tópico de importação: pubsub.topics.setIamPolicy

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Pode configurar o controlo de acesso ao nível do projeto e ao nível do recurso individual.

Configure a identidade federada para aceder aos Hubs de Eventos do Azure

A federação de identidades da carga de trabalho permite que os Trusted Cloud serviços acedam a cargas de trabalho executadas fora do Trusted Cloud. Com a federação de identidades, não precisa de manter nem transmitir credenciais para Trusted Cloud aceder aos seus recursos noutras nuvens. Em alternativa, pode usar as identidades das próprias cargas de trabalho para fazer a autenticação no Trusted Cloud e aceder aos recursos.

Crie uma conta de serviço em Trusted Cloud

Este passo é opcional. Se já tiver uma conta de serviço, pode usá-la neste procedimento em vez de criar uma nova conta de serviço. Se estiver a usar uma conta de serviço existente, aceda a Registe o ID exclusivo da conta de serviço para o passo seguinte.

Para tópicos de importação do Azure Event Hubs, o Pub/Sub usa a conta de serviço como a identidade para aceder aos recursos do Azure.

Para mais informações sobre como criar uma conta de serviço, incluindo pré-requisitos, funções e autorizações necessárias, e diretrizes de nomenclatura, consulte o artigo Crie contas de serviço. Depois de criar uma conta de serviço, pode ter de aguardar 60 segundos ou mais antes de usar a conta de serviço. Este comportamento ocorre porque as operações de leitura são eventualmente consistentes. Pode demorar algum tempo até que a nova conta de serviço fique visível.

Registe o ID exclusivo da conta de serviço

Precisa de um ID exclusivo da conta de serviço para configurar o registo de apps no Azure.

  1. Na Trusted Cloud consola, aceda à página de detalhes da conta de serviço.

    Aceder à conta de serviço

  2. Clique na conta de serviço que acabou de criar ou na que planeia usar.

  3. Na página Detalhes da conta de serviço, registe o número do ID exclusivo.

    Precisa do ID como parte do fluxo de trabalho para configurar o registo de apps no Azure.

Adicione a função de criador de tokens da conta de serviço à conta de serviço do Pub/Sub

A função de criador de tokens de contas de serviço (roles/iam.serviceAccountTokenCreator) permite que os principais criem credenciais de curta duração para uma conta de serviço. Estes tokens ou credenciais são usados para se fazer passar pela conta de serviço.

Para mais informações sobre a simulação da conta de serviço, consulte o artigo Simulação da conta de serviço.

Também pode adicionar a função de publicador do Pub/Sub (roles/pubsub.publisher) durante este procedimento. Para mais informações sobre a função e o motivo pelo qual a está a adicionar, consulte o artigo Adicione a função de publicador do Pub/Sub à conta de serviço do Pub/Sub.

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Clique na caixa de verificação Incluir concessões de funções fornecidas pela Google. S3NS

  3. Procure a conta de serviço com o formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com.

  4. Para esta conta de serviço, clique no botão Editar principal.

  5. Se necessário, clique em Adicionar outra função.

  6. Pesquise e clique na função Criador de tokens de conta de serviço (roles/iam.serviceAccountTokenCreator).

  7. Clique em Guardar.

Crie um registo de app com federação de identidades

Para carregar dados dos Hubs de Eventos do Azure, registe uma aplicação na plataforma de identidade da Microsoft e ative a federação de identidades para a sua conta de serviço. Isto permite que a sua conta de serviço se autentique no Azure.

Para mais informações sobre o registo de uma aplicação na plataforma de identidade da Microsoft, consulte o início rápido do registo de apps do Azure.

  1. Inicie sessão no portal do Azure e abra a página Microsoft Entra ID.

  2. No painel de navegação, clique em Gerir > Registos de apps.

  3. Clique em Novo registo.

  4. Dê um nome à aplicação e defina os Tipos de contas suportados para qualquer valor que não seja Apenas contas Microsoft pessoais.

  5. Para registar a aplicação, clique em Registar.

  6. Abra a aplicação e clique em Gerir > Certificados e segredos.

  7. Clique em Adicionar credencial.

  8. Para configurar uma credencial federada, clique em Outro emissor.

  9. No campo Emissor, introduza https://accounts.google.com.

  10. No campo Valor, introduza o ID exclusivo da sua conta de serviço do Pub/Sub.

    Pode encontrar este ID em Registe o ID exclusivo da conta de serviço.

  11. Atribua um nome à identidade federada e, de seguida, clique em Adicionar.

Conceda atribuições de funções à app registada

Para permitir que o Pub/Sub leia a partir do seu hub de eventos do Azure, conceda as funções necessárias à sua app registada.

  1. Inicie sessão no portal do Azure e abra o espaço de nomes dos Hubs de Eventos.

    Para abrir um espaço de nomes, introduza Event Hubs na pesquisa e, de seguida, clique num dos espaços de nomes.

  2. Na barra lateral, clique em Controlo de acesso (IAM).

  3. Clique em Adicionar > Adicionar atribuição de função.

  4. Selecione a função Azure Event Hubs Data Receiver e, de seguida, clique em Seguinte.

    Isto concede à conta de serviço do Pub/Sub acesso de leitura ao seu hub de eventos do Azure.

  5. Clique em + Selecionar membros e, de seguida, pesquise a sua app registada.

  6. Introduza o nome da app registada no campo de pesquisa.

  7. Clique no nome da sua app e, de seguida, clique em Selecionar.

  8. Clique em Rever + atribuir.

  9. Repita os passos 3 a 6 e adicione a função Azure Event Hubs Data Sender.

    Esta função concede à conta de serviço do Google Cloud autorização para obter metadados do seu hub de eventos do Azure.

Para mais informações sobre a atribuição de funções do Azure, visite a página Atribua funções do Azure.

Adicione a função de publicador do Pub/Sub ao principal do Pub/Sub

Para ativar a publicação, tem de atribuir uma função de publicador à conta de serviço do Pub/Sub para que o Pub/Sub possa publicar no tópico de importação dos Hubs de Eventos do Azure.

Adicione a função de agente de serviço do Pub/Sub à conta de serviço do Pub/Sub

Para permitir que o Pub/Sub use a quota de publicação do projeto do tópico de importação, o agente de serviço do Pub/Sub requer a autorização serviceusage.services.use no projeto do tópico de importação.

Para conceder esta autorização, recomendamos que adicione a função de agente do serviço Pub/Sub à conta de serviço Pub/Sub.

Se a conta de serviço do Pub/Sub não tiver a função de agente de serviço do Pub/Sub, pode ser concedida da seguinte forma:

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Clique na caixa de verificação Incluir concessões de funções fornecidas pela Google. S3NS

  3. Procure a conta de serviço com o formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com.

  4. Para esta conta de serviço, clique no botão Editar principal.

  5. Se necessário, clique em Adicionar outra função.

  6. Pesquise e clique na função de agente do serviço Pub/Sub (roles/pubsub.serviceAgent).

  7. Clique em Guardar.

Ative a publicação de todos os tópicos

Use este método se não tiver criado tópicos de importação do Azure Event Hubs.

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Clique na caixa de verificação Incluir concessões de funções fornecidas pela Google. S3NS

  3. Procure a conta de serviço com o formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com.

  4. Para esta conta de serviço, clique no botão Editar principal.

  5. Se necessário, clique em Adicionar outra função.

  6. Pesquise e clique na função de publicador do Pub/Sub (roles/pubsub.publisher).

  7. Clique em Guardar.

Ative a publicação a partir de um único tópico

Use este método apenas se o tópico de importação do Azure Event Hubs já existir.

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

    Activate Cloud Shell

    At the bottom of the Trusted 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. Execute o 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.s3ns-system.iam.gserviceaccount.com" \
       --role="roles/pubsub.publisher"

    Substitua o seguinte:

    • TOPIC_ID: o ID do tópico de importação do Azure Event Hubs.

    • PROJECT_NUMBER: o número do projeto. Para ver o número do projeto, consulte o artigo Identificar projetos.

  3. Adicione a função de utilizador da conta de serviço à conta de serviço

    A função Utilizador da conta de serviço (roles/iam.serviceAccountUser) inclui a autorização iam.serviceAccounts.actAs que permite a um principal anexar uma conta de serviço às definições de carregamento do tópico de importação do Azure Event Hubs e usar essa conta de serviço para identidade federada.

    1. Na Trusted Cloud consola, aceda à página IAM.

      Aceda ao IAM

    2. Para o principal que está a emitir as chamadas de criação ou atualização de tópicos, clique no botão Editar principal.

    3. Se necessário, clique em Adicionar outra função.

    4. Pesquise e clique na função Utilizador da conta de serviço (roles/iam.serviceAccountUser).

    5. Clique em Guardar.

    Use tópicos de importação do Azure Event Hubs

    Pode criar um novo tópico de importação ou editar um tópico existente.

    Considerações

    • A criação do tópico e da subscrição em separado, mesmo que seja feita em rápida sucessão, pode levar à perda de dados. Existe um curto período durante o qual o tópico existe sem uma subscrição. Se forem enviados dados para o tópico durante este período, estes são perdidos. Se criar primeiro o tópico, criar a subscrição e, em seguida, converter o tópico num tópico de importação, garante que não perde nenhuma mensagem durante o processo de importação.

    • Se precisar de recriar o hub de eventos do Azure de um tópico de importação existente com o mesmo nome, não pode apenas eliminar o hub de eventos do Azure e recriá-lo. Esta ação pode invalidar a gestão de deslocamentos do Pub/Sub, o que pode levar à perda de dados. Para mitigar esta situação, siga estes passos:

      • Elimine o tópico de importação do Pub/Sub
      • Elimine o hub de eventos do Azure
      • Crie o hub de eventos do Azure
      • Crie o tópico de importação do Pub/Sub
    • Os dados de um hub de eventos do Azure são sempre lidos a partir do desvio mais antigo.

    Crie tópicos de importação do Azure Event Hubs

    Para saber mais sobre as propriedades associadas a um tópico, consulte o artigo Propriedades de um tópico.

    Certifique-se de que concluiu os seguintes procedimentos:

    Para criar um tópico de importação do Azure Event Hubs, siga estes passos:

    Consola

    1. Na Trusted Cloud consola, aceda à página Tópicos.

      Aceda a Tópicos

    2. Clique em Criar tópico.

    3. No campo ID do tópico, introduza um ID para o tópico de importação do Azure Event Hubs. Para mais informações sobre a nomenclatura de tópicos, consulte as diretrizes de nomenclatura.

    4. Selecione Adicionar uma subscrição predefinida.

    5. Selecione Ativar carregamento.

    6. Para a origem da carregamento, selecione Azure Event Hubs.

    7. Introduza os seguintes detalhes:

      • Grupo de recursos: o nome do grupo de recursos do Azure que contém o namespace dos Hubs de Eventos do Azure que planeia carregar para o Pub/Sub.
      • Espaço de nomes do Event Hub: o nome do espaço de nomes do Azure Event Hubs que contém o hub de eventos do Azure que planeia carregar para o Pub/Sub.
      • Event Hub: o nome do hub de eventos do Azure que planeia carregar para o Pub/Sub.
      • ID de cliente: o ID da aplicação (cliente) da app registada no Azure que contém a identidade federada da conta do serviço Google Cloud. Este valor deve ser um UUID. Para mais informações, visite a página de registo da app Azure.
      • ID do inquilino: o ID do diretório (inquilino) do inquilino que detém o hub de eventos do Azure que planeia carregar para o Pub/Sub. Este valor deve ser um UUID. Para encontrar o ID do inquilino, visite a página do Azure Get subscription and tenant IDs.
      • Subscription ID: o ID da subscrição proprietária do grupo de recursos do Azure Event Hubs. Este valor deve ser um UUID. Para encontrar o ID da subscrição, visite a página do Azure Get subscription and tenant IDs.
      • Conta de serviço: a conta de serviço que criou em Crie uma conta de serviço em Trusted Cloud.
    8. Deixe os restantes campos com os valores predefinidos.

    9. Clique em Criar tópico.

    gcloud

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

      Activate Cloud Shell

      At the bottom of the Trusted 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. Execute o 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
      

      Substitua o seguinte:

      • TOPIC_ID: o nome ou o ID do seu tópico do Pub/Sub.
      • RESOURCE_GROUP: o nome do grupo de recursos do Azure Event Hubs que contém o espaço de nomes do Azure Event Hubs que planeia carregar para o Pub/Sub.
      • NAMESPACE: o nome do espaço de nomes do Azure Event Hubs que contém o hub de eventos do Azure que planeia carregar para o Pub/Sub.
      • EVENT_HUB: o nome do centro de eventos do Azure que planeia carregar para o Pub/Sub.
      • CLIENT_ID: o ID da aplicação (cliente) da app registada no Azure que contém a identidade federada da Trusted Cloud conta de serviço. Este valor deve ser um UUID. Para mais informações, visite a página de registo de apps do Azure.
      • TENANT_ID: o ID do diretório (inquilino) do inquilino proprietário do hub de eventos do Azure que planeia carregar para o Pub/Sub. Este valor deve ser um UUID. Para encontrar o ID do inquilino, visite a página do Azure Get subscription and tenant IDs.
      • SUBSCRIPTION_ID: o ID da subscrição da subscrição proprietária do hub de eventos do Azure que planeia carregar para o Pub/Sub. Este valor deve ser um UUID. Para encontrar o ID da subscrição, visite a página do Azure Get subscription and tenant IDs.
      • SERVICE_ACCOUNT: a conta de serviço que criou em Crie uma conta de serviço em Trusted Cloud
    3. C++

      Antes de experimentar este exemplo, siga as instruções de configuração do C++ no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.

      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";
      }

      Ir

      O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.

      Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.

      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

      Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.

      
      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

      Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.

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

      Node.ts

      Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.

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

      Python

      Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.

      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")

    Se tiver problemas, consulte o artigo Resolução de problemas de um tópico de importação do Azure Event Hubs.

    Edite tópicos de importação do Azure Event Hubs

    Para editar as definições da origem de dados de carregamento de um tópico de importação do Azure Event Hubs, siga estes passos:

    Consola

    1. Na Trusted Cloud consola, aceda à página Tópicos.

      Aceda a Tópicos

    2. Clique no tópico de importação do Azure Event Hubs.

    3. Na página de detalhes do tópico, clique em Editar.

    4. Atualize os campos que quer alterar.

    5. Clique em Atualizar.

    gcloud

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

      Activate Cloud Shell

      At the bottom of the Trusted 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. Execute o comando gcloud pubsub topics update com todas as flags mencionadas no seguinte exemplo:

      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
      

      Substitua o seguinte:

      • TOPIC_ID: o nome ou o ID do seu tópico do Pub/Sub.
      • RESOURCE_GROUP: o nome do grupo de recursos do Azure Event Hubs que contém o espaço de nomes do Azure Event Hubs que está a carregar para o Pub/Sub.
      • NAMESPACE: o nome do espaço de nomes do Azure Event Hubs que contém o hub de eventos do Azure que está a carregar para o Pub/Sub.
      • EVENT_HUB: o nome do hub de eventos do Azure que está a carregar para o Pub/Sub.
      • CLIENT_ID: o ID da aplicação (cliente) da app registada no Azure que contém a identidade federada da Trusted Cloud conta de serviço. Este valor deve ser um UUID. Para mais informações, consulte a página de registo de apps do Azure.
      • TENANT_ID: o ID do diretório (inquilino) do inquilino proprietário dos Azure Event Hubs que está a carregar para o Pub/Sub. Este valor deve ser um UUID. Para encontrar o ID do inquilino, visite a página do Azure Get subscription and tenant IDs.
      • SUBSCRIPTION_ID: o ID da subscrição da subscrição proprietária do hub de eventos do Azure que está a carregar para o Pub/Sub. Este valor deve ser um UUID. Para encontrar o ID da subscrição, consulte o artigo Azure Get subscription and tenant IDs.
      • SERVICE_ACCOUNT: a conta de serviço que criou em Crie uma conta de serviço em Trusted Cloud

    Quotas e limites

    O débito do publicador para tópicos de importação está limitado pela quota de publicação do tópico. Para mais informações, consulte o artigo Quotas e limites do Pub/Sub.

    O que se segue?