Crear suscripciones a BigQuery

En este documento se describe cómo crear una suscripción de BigQuery. Puedes usar la Google Cloud consola, la CLI de Google Cloud, la biblioteca de cliente o la API Pub/Sub para crear una suscripción de BigQuery.

Antes de empezar

Antes de leer este documento, asegúrate de que conoces los siguientes conceptos:

Además de conocer Pub/Sub y BigQuery, debes cumplir los siguientes requisitos previos antes de crear una suscripción de BigQuery:

  • Existe una tabla de BigQuery. También puedes crear una cuando crees la suscripción de BigQuery, tal como se describe en las secciones posteriores de este documento.

  • Compatibilidad entre el esquema del tema de Pub/Sub y la tabla de BigQuery. Si añades una tabla de BigQuery no compatible, recibirás un mensaje de error relacionado con la compatibilidad. Para obtener más información, consulta Compatibilidad de esquemas.

Roles y permisos necesarios

A continuación, se incluye una lista de directrices sobre roles y permisos:

  • Para crear una suscripción, debes configurar el control de acceso a nivel de proyecto.

  • También necesitas permisos a nivel de recurso si tus suscripciones y temas están en proyectos diferentes, como se explica más adelante en esta sección.

  • Para crear una suscripción de BigQuery, el agente de servicio de Pub/Sub o una cuenta de servicio personalizada deben tener permiso para escribir en la tabla de BigQuery específica. Para obtener más información sobre cómo conceder estos permisos, consulta la siguiente sección de este documento.

  • Puedes configurar una suscripción de BigQuery en un proyecto para escribir en una tabla de BigQuery de otro proyecto.

Para obtener los permisos que necesitas para crear suscripciones de BigQuery, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Pub/Sub (roles/pubsub.editor) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear suscripciones de BigQuery. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear suscripciones de BigQuery, se necesitan los siguientes permisos:

  • Extraer de una suscripción: pubsub.subscriptions.consume
  • Crear una suscripción: pubsub.subscriptions.create
  • Eliminar una suscripción: pubsub.subscriptions.delete
  • Obtener una suscripción: pubsub.subscriptions.get
  • Mostrar una suscripción: pubsub.subscriptions.list
  • Actualizar una suscripción: pubsub.subscriptions.update
  • Adjuntar una suscripción a un tema: pubsub.topics.attachSubscription
  • Obtener la política de gestión de identidades y accesos de una suscripción: pubsub.subscriptions.getIamPolicy
  • Configura la política de gestión de identidades y accesos de una suscripción: pubsub.subscriptions.setIamPolicy

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para permitir que una entidad de un proyecto cree una suscripción de BigQuery en otro proyecto, debes asignarle el rol Editor de Pub/Sub (roles/pubsub.editor) en ambos proyectos. De esta forma, se conceden los permisos necesarios para crear la nueva suscripción de BigQuery y adjuntarla al tema original. La función Editor de Pub/Sub (roles/pubsub.editor) en el tema también te ayuda a adjuntar suscripciones de BigQuery de otro proyecto al tema.

Asignar roles a cuentas de servicio

Algunos servicios de Google Cloud tienen cuentas de servicio gestionadas por Google Cloudque permiten que los servicios accedan a tus recursos. Estas cuentas de servicio se conocen como agentes de servicio. Pub/Sub crea y mantiene un agente de servicio para cada proyecto con el formato service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com.

Puedes elegir entre permitir que el agente de servicio de Pub/Sub o una cuenta de servicio personalizada escriban en la tabla de BigQuery.

Si das permiso al agente de servicio de Pub/Sub, cualquier usuario que tenga permiso para crear una suscripción en tu proyecto podrá escribir en la tabla de BigQuery. Si quieres proporcionar permisos más específicos para escribir en la tabla de BigQuery, configura una cuenta de servicio personalizada.

Para obtener más información sobre la gestión de identidades y accesos de BigQuery, consulta el artículo sobre los roles y permisos de BigQuery.

Asignar roles de BigQuery al agente de servicio de Pub/Sub

Si quieres crear una suscripción de BigQuery con el agente de servicio de Pub/Sub, este debe tener permiso para escribir en la tabla de BigQuery específica y leer los metadatos de la tabla.

Otorga el rol Editor de datos de BigQuery (roles/bigquery.dataEditor) al agente de servicio de Pub/Sub. Puedes conceder el permiso en una tabla concreta o en todo el proyecto.

Tabla

  1. En la Google Cloud consola, ve a BigQuery Studio.

    Ir a BigQuery Studio

  2. En el cuadro de búsqueda del panel Explorador, etiquetado como Filtrar por nombre y etiquetas, escribe el nombre de la tabla y pulsa Intro.

  3. Haga clic en la tabla a la que quiera conceder permiso.

  4. En la tabla, selecciona Más acciones > Compartir > Permisos.

    También puede hacer clic en la tabla y, en la página principal, en Compartir > Permisos.

    Se abrirá la ventana Permisos para compartir.

  5. Haz clic en Añadir principal.

  6. En Añadir principales, introduce el nombre del agente de servicio de Pub/Sub del proyecto que contiene la suscripción. El formato del agente de servicio es service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com. Por ejemplo, en un proyecto con project-number=112233445566, el agente de servicio tiene el formato service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.