Un tema de importación de Azure Event Hubs te permite ingerir datos de forma continua desde Azure Event Hubs como fuente externa y en Pub/Sub. Después, puedes transmitir los datos a cualquiera de los destinos que admite Pub/Sub.
En este documento se explica cómo crear y gestionar temas de importación de Azure Event Hubs. Para crear un tema estándar, consulta Crear un tema estándar.
Para obtener más información sobre los temas de importación, consulta el artículo Acerca de los temas de importación.
Antes de empezar
Consulta más información sobre el proceso de publicación de Pub/Sub.
Configure los roles y permisos necesarios para gestionar los temas de importación de Azure Event Hubs, incluidos los siguientes:
Configura la federación de identidades de cargas de trabajo para que Google Cloud pueda acceder al servicio de streaming externo.
Roles y permisos necesarios
Para obtener los permisos que necesitas para crear y gestionar temas de importación de Azure Event Hubs,
pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Pub/Sub (roles/pubsub.editor
)
en tu tema o proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear y gestionar temas de importación de Azure Event Hubs. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Se necesitan los siguientes permisos para crear y gestionar temas de importación de Azure Event Hubs:
-
Crea un tema de importación:
pubsub.topics.create
-
Eliminar un tema importado:
pubsub.topics.delete
-
Obtener un tema de importación:
pubsub.topics.get
-
Para enumerar un tema de importación, sigue estos pasos:
pubsub.topics.list
-
Publicar en un tema de importación:
pubsub.topics.publish and pubsub.serviceAgent
-
Actualizar un tema de importación:
pubsub.topics.update
-
Obtiene la política de gestión de identidades y accesos de un tema de importación:
pubsub.topics.getIamPolicy
-
Configura la política de gestión de identidades y accesos de un tema de importación:
pubsub.topics.setIamPolicy
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Puedes configurar el control de acceso a nivel de proyecto y de recurso individual.
Configurar la identidad federada para acceder a Azure Event Hubs
La federación de identidades de cargas de trabajo permite que los servicios accedan a cargas de trabajo que se ejecutan fuera de Google Cloud. Google Cloud Con la federación de identidades, no es necesario mantener ni transferir credenciales a Google Cloud para acceder a tus recursos en otras nubes. En su lugar, puedes usar las identidades de las cargas de trabajo para autenticarte en Google Cloud y acceder a los recursos.
Crear una cuenta de servicio en Google Cloud
Este paso es opcional. Si ya tienes una cuenta de servicio, puedes usarla en este procedimiento en lugar de crear una nueva. Si usas una cuenta de servicio, ve a Registrar el ID único de la cuenta de servicio para el siguiente paso.
En el caso de los temas de importación de Azure Event Hubs, Pub/Sub usa la cuenta de servicio como identidad para acceder a los recursos de Azure.
Para obtener más información sobre cómo crear una cuenta de servicio, incluidos los requisitos previos, los roles y permisos necesarios, y las directrices para asignar nombres, consulta el artículo Crear cuentas de servicio. Después de crear una cuenta de servicio, es posible que tengas que esperar 60 segundos o más antes de usarla. Este comportamiento se produce porque las operaciones de lectura son coherentes con el tiempo. La nueva cuenta de servicio puede tardar en aparecer.
Registrar el ID único de la cuenta de servicio
Necesitas un ID único de cuenta de servicio para configurar el registro de aplicaciones en Azure.
En la Google Cloud consola, ve a la página de detalles de la cuenta de servicio.
Haz clic en la cuenta de servicio que acabas de crear o en la que tienes previsto usar.
En la página Detalles de la cuenta de servicio, anota el número de ID único.
Necesitas el ID como parte del flujo de trabajo para configurar el registro de aplicaciones en Azure.
Añadir el rol de creador de tokens de cuenta de servicio a la cuenta de servicio de Pub/Sub
El rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
)
permite a las entidades principales crear credenciales de duración reducida
para una cuenta de servicio. Estos tokens o credenciales se usan para suplantar la identidad de la cuenta de servicio.
Para obtener más información sobre la suplantación de identidad en cuentas de servicio, consulta el artículo Suplantación de identidad en cuentas de servicio.
También puedes añadir el rol de editor de Pub/Sub (roles/pubsub.publisher
) durante este procedimiento. Para obtener más información sobre el rol y por qué lo añade, consulte Añadir el rol de editor de Pub/Sub a la cuenta de servicio de Pub/Sub.
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Marca la casilla Incluir concesiones de roles proporcionadas por Google.
Busca la cuenta de servicio que tenga el formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.En esta cuenta de servicio, haz clic en el botón Editar principal.
Si es necesario, haz clic en Añadir otro rol.
Busca y haz clic en el rol Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
).Haz clic en Guardar.
Crear un registro de aplicación con la federación de identidades
Para ingerir datos de Azure Event Hubs, registra una aplicación en la plataforma de identidad de Microsoft y habilita la federación de identidades en tu cuenta de servicio. De esta forma, tu cuenta de servicio puede autenticarse en Azure.
Para obtener más información sobre cómo registrar una aplicación en la plataforma de identidad de Microsoft, consulta la guía de inicio rápido sobre el registro de aplicaciones de Azure.
Inicia sesión en el portal de Azure y abre la página Microsoft Entra ID.
En el panel de navegación, haz clic en Gestionar > Registros de aplicaciones.
Haz clic en Nuevo registro.
Ponle un nombre a la aplicación y, en Tipos de cuenta admitidos, selecciona cualquier opción que no sea Solo cuentas personales de Microsoft.
Para registrar la aplicación, haz clic en Registrar.
Abre la aplicación y haz clic en Gestionar > Certificados y secretos.
Haz clic en Añadir credencial.
Para configurar una credencial federada, haz clic en Otro emisor.
En el campo Emisor, introduce
https://accounts.google.com
.En el campo Valor, introduce el ID único de tu cuenta de servicio de Pub/Sub.
Puedes encontrar este ID en Anota el ID único de la cuenta de servicio.
Ponle un nombre a la identidad federada y haz clic en Añadir.
Asignar roles a la aplicación registrada
Para permitir que Pub/Sub lea de tu centro de eventos de Azure, concede los roles necesarios a tu aplicación registrada.
Inicia sesión en el portal de Azure y abre tu espacio de nombres de Event Hubs.
Para abrir un espacio de nombres, escriba Event Hubs en la búsqueda y, a continuación, haga clic en uno de los espacios de nombres.
En la barra lateral, haz clic en Control de acceso (IAM).
Haz clic en Añadir > Añadir asignación de rol.
Selecciona el rol Receptor de datos de Azure Event Hubs y, a continuación, haz clic en Siguiente.
De esta forma, la cuenta de servicio de Pub/Sub tendrá acceso de lectura a tu centro de eventos de Azure.
Haz clic en + Seleccionar miembros y busca la aplicación registrada.
Escribe el nombre de la aplicación registrada en el campo de búsqueda.
Haz clic en el nombre de tu aplicación y, a continuación, en Seleccionar.
Haz clic en Revisar y asignar.
Repite los pasos del 3 al 6 y añade el rol Remitente de datos de Azure Event Hubs.
Este rol concede permiso a la cuenta de servicio de Google Cloud para obtener metadatos de tu centro de eventos de Azure.
Para obtener más información sobre cómo asignar roles de Azure, consulta la página Asignar roles de Azure.
Añadir el rol de editor de Pub/Sub a la cuenta principal de Pub/Sub
Para habilitar la publicación, debes asignar un rol de editor a la cuenta de servicio de Pub/Sub para que Pub/Sub pueda publicar en el tema de importación de Azure Event Hubs.
Añadir el rol de agente de servicio de Pub/Sub a la cuenta de servicio de Pub/Sub
Para permitir que Pub/Sub use la cuota de publicación del proyecto del tema de importación, el agente de servicio de Pub/Sub necesita el permiso serviceusage.services.use
en el proyecto del tema de importación.
Para conceder este permiso, te recomendamos que añadas el rol de agente de servicio de Pub/Sub a la cuenta de servicio de Pub/Sub.
Si la cuenta de servicio de Pub/Sub no tiene el rol de agente de servicio de Pub/Sub, se le puede asignar de la siguiente manera:
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Marca la casilla Incluir concesiones de roles proporcionadas por Google.
Busca la cuenta de servicio que tenga el formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.En esta cuenta de servicio, haz clic en el botón Editar principal.
Si es necesario, haz clic en Añadir otro rol.
Busca y haz clic en el rol Agente de servicio de Pub/Sub (
roles/pubsub.serviceAgent
).Haz clic en Guardar.
Habilitar la publicación de todos los temas
Usa este método si no has creado ningún tema de importación de Azure Event Hubs.
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Marca la casilla Incluir concesiones de roles proporcionadas por Google.
Busca la cuenta de servicio que tenga el formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.En esta cuenta de servicio, haz clic en el botón Editar principal.
Si es necesario, haz clic en Añadir otro rol.
Busca y haz clic en el rol Editor de Pub/Sub (
roles/pubsub.publisher
).Haz clic en Guardar.
Habilitar la publicación desde un solo tema
Utiliza este método solo si ya existe el tema de importación de Azure Event Hubs.
In the Google Cloud console, 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.
Ejecuta el 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"
Haz los cambios siguientes:
TOPIC_ID
: el ID del tema de importación de Azure Event Hubs.PROJECT_NUMBER
: el número de proyecto. Para ver el número de proyecto, consulta el artículo Identificar proyectos.
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
En el principal que emite las llamadas para crear o actualizar temas, haz clic en el botón Editar principal.
Si es necesario, haz clic en Añadir otro rol.
Busca y haz clic en el rol Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
).Haz clic en Guardar.
Si creas el tema y la suscripción por separado, aunque lo hagas de forma rápida, se pueden perder datos. Hay un breve periodo en el que el tema está disponible sin suscripción. Si se envían datos al tema durante este periodo, se perderán. Si creas el tema primero, luego la suscripción y, por último, conviertes el tema en un tema de importación, te aseguras de que no se pierda ningún mensaje durante el proceso de importación.
Si necesitas volver a crear el centro de eventos de Azure de un tema de importación con el mismo nombre, no puedes simplemente eliminarlo y volver a crearlo. Esta acción puede invalidar la gestión de desfases de Pub/Sub, lo que puede provocar la pérdida de datos. Para mitigar este problema, sigue estos pasos:
- Eliminar el tema de importación de Pub/Sub
- Eliminar el centro de eventos de Azure
- Crear el centro de eventos de Azure
- Crear el tema de importación de Pub/Sub
Los datos de un centro de eventos de Azure siempre se leen desde el desplazamiento más antiguo.
Configurar la identidad federada para acceder a Azure Event Hubs
Añadir el rol de editor de Pub/Sub a la cuenta de servicio de Pub/Sub
Añadir el rol Usuario de cuenta de servicio al principal de IAM
En la Google Cloud consola, ve a la página Temas.
Haz clic en Crear tema.
En el campo ID de tema, introduce un ID para el tema de importación de Azure Event Hubs. Para obtener más información sobre cómo asignar nombres a los temas, consulta las directrices de nomenclatura.
Selecciona Añadir una suscripción predeterminada.
Selecciona Habilitar la ingesta.
En Fuente de ingestión, seleccione Azure Event Hubs.
Introduce los siguientes datos:
- Grupo de recursos: el nombre del grupo de recursos de Azure que contiene el espacio de nombres de Azure Event Hubs que quieres insertar en Pub/Sub.
- Espacio de nombres de Event Hub: el nombre del espacio de nombres de Azure Event Hubs que contiene el Event Hub de Azure que quieres insertar en Pub/Sub.
- Event Hub: el nombre del centro de eventos de Azure que quieres ingerir en Pub/Sub.
- ID de cliente: el ID de la aplicación (cliente) registrada en Azure que contiene la identidad federada de la cuenta de servicio de Google Cloud. Este valor debe ser un UUID. Para obtener más información, visita la página de registro de aplicaciones de Azure.
- ID de cliente: el ID de directorio (cliente) del cliente propietario del centro de eventos de Azure que quieres insertar en Pub/Sub. Este valor debe ser un UUID. Para encontrar tu ID de cliente, visita la página de Azure para obtener los IDs de suscripción y de cliente.
- ID de suscripción: el ID de suscripción de la suscripción propietaria del grupo de recursos de Azure Event Hubs. Este valor debe ser un UUID. Para encontrar tu ID de suscripción, ve a la página de Azure para obtener los IDs de suscripción y de cliente.
- Cuenta de servicio: la cuenta de servicio que has creado en Crear una cuenta de servicio Google Cloud.
Deja los campos restantes con los valores predeterminados.
Haz clic en Crear tema.
-
In the Google Cloud console, 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.
Ejecuta el 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
Haz los cambios siguientes:
TOPIC_ID
: el nombre o el ID de tu tema de Pub/Sub.RESOURCE_GROUP
: el nombre del grupo de recursos de Azure Event Hubs que contiene el espacio de nombres de Azure Event Hubs en el que quieres insertar datos en Pub/Sub.NAMESPACE
: el nombre del espacio de nombres de Azure Event Hubs que contiene el centro de eventos de Azure que quiere insertar en Pub/Sub.EVENT_HUB
: el nombre del centro de eventos de Azure que quieres insertar en Pub/Sub.CLIENT_ID
: el ID (de cliente) de la aplicación registrada en Azure que contiene la identidad federada de la cuenta de servicioGoogle Cloud . Este valor debe ser un UUID. Para obtener más información, visita la página de registro de aplicaciones de Azure.TENANT_ID
: el ID de directorio (inquilino) del inquilino propietario del centro de eventos de Azure que tiene previsto ingerir en Pub/Sub. Este valor debe ser un UUID. Para encontrar tu ID de cliente, visita la página Obtener los IDs de suscripción y de cliente de Azure.SUBSCRIPTION_ID
: el ID de suscripción de la suscripción que posee el centro de eventos de Azure que quieres ingerir en Pub/Sub. Este valor debe ser un UUID. Para encontrar tu ID de suscripción, ve a la página de Azure para obtener los IDs de suscripción y de cliente.SERVICE_ACCOUNT
: la cuenta de servicio que has creado en Crear una cuenta de servicio en Google Cloud
En la Google Cloud consola, ve a la página Temas.
Haga clic en el tema de importación de Azure Event Hubs.
En la página de detalles del tema, haz clic en Editar.
Actualiza los campos que quieras cambiar.
Haz clic en Actualizar.
-
In the Google Cloud console, 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.
Ejecuta el comando
gcloud pubsub topics update
con todas las marcas que se mencionan en el siguiente ejemplo: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
Haz los cambios siguientes:
TOPIC_ID
: el nombre o el ID de tu tema de Pub/Sub.RESOURCE_GROUP
: el nombre del grupo de recursos de Azure Event Hubs que contiene el espacio de nombres de Azure Event Hubs en el que está insertando datos en Pub/Sub.NAMESPACE
: el nombre del espacio de nombres de Azure Event Hubs que contiene el centro de eventos de Azure que estás ingiriendo en Pub/Sub.EVENT_HUB
: el nombre del centro de eventos de Azure que está ingiriendo en Pub/Sub.CLIENT_ID
: el ID (de cliente) de la aplicación registrada en Azure que contiene la identidad federada de la cuenta de servicioGoogle Cloud . Este valor debe ser un UUID. Para obtener más información, consulta la página de registro de aplicaciones de Azure.TENANT_ID
: el ID de directorio (propietario) del propietario de los centros de eventos de Azure que está ingiriendo en Pub/Sub. Este valor debe ser un UUID. Para encontrar tu ID de cliente, visita la página de Azure para obtener los IDs de suscripción y de cliente.SUBSCRIPTION_ID
: el ID de suscripción de la suscripción que posee el centro de eventos de Azure en el que estás insertando datos en Pub/Sub. Este valor debe ser un UUID. Para encontrar tu ID de suscripción, consulta Obtener los IDs de suscripción y de cliente de Azure.SERVICE_ACCOUNT
: la cuenta de servicio que has creado en Crear una cuenta de servicio en Google Cloud
Elige el tipo de suscripción para tu tema.
Consulta cómo publicar un mensaje en un tema.
Crea o modifica un tema con gcloud CLI, APIs REST o bibliotecas de cliente.
Solucionar problemas con un tema de importación de Azure Event Hubs
Añadir el rol de usuario de cuenta de servicio a la cuenta de servicio
El rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) incluye el permiso iam.serviceAccounts.actAs
, que permite que un principal adjunte una cuenta de servicio a los ajustes de ingestión del tema de importación de Azure Event Hubs y use esa cuenta de servicio para la identidad federada.
Usar temas de importación de Azure Event Hubs
Puede crear un tema de importación o editar uno que ya tenga.
Cuestiones importantes
Crear temas de importación de Azure Event Hubs
Para obtener más información sobre las propiedades asociadas a un tema, consulta Propiedades de un tema.
Asegúrate de que has completado los siguientes procedimientos:
Para crear un tema de importación de Azure Event Hubs, siga estos pasos:
Consola
gcloud
C++
Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
Node.ts
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Si tienes problemas, consulta Solucionar problemas al importar un tema de Azure Event Hubs.
Editar temas de importación de Azure Event Hubs
Para editar la configuración de la fuente de datos de ingestión de un tema de importación de Azure Event Hubs, siga estos pasos:
Consola
gcloud
Cuotas y límites
El rendimiento de publicación de los temas de importación está limitado por la cuota de publicación del tema. Para obtener más información, consulta las cuotas y los límites de Pub/Sub.