En este tutorial se muestra cómo usar la plantilla Bigtable change streams to Pub/Sub (Flujos de cambios de Bigtable a Pub/Sub), incluido cómo configurar un tema y la plantilla. También puedes crear una función de Cloud Run en el lenguaje de programación que elijas que se active con el flujo de eventos.
Este tutorial está dirigido a usuarios técnicos que estén familiarizados con Bigtable, la escritura de código y los servicios de streaming de eventos.
Objetivos
En este tutorial te explicamos cómo hacer lo siguiente:
- Crea una tabla de Bigtable con un flujo de cambios habilitado.
- Crea un tema de Pub/Sub con el esquema de flujo de cambios de Bigtable.
- Despliega un flujo de cambios de Bigtable en una canalización de Pub/Sub en Dataflow mediante la plantilla.
- Consulta el flujo de eventos en Pub/Sub directamente o en los registros de una función de Cloud Run.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que hayas creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. - Actualiza e instala la
CLI de
cbt.gcloud components update gcloud components install cbt
En la Google Cloud consola, ve a la página Temas de Pub/Sub.
Haz clic en Crear tema.
Define el ID como
bigtable-change-stream-topic.Selecciona Usar un esquema.
En el menú desplegable Select a Pub/Sub schema (Seleccionar un esquema de Pub/Sub), haga clic en Create new schema (Crear esquema). Se abrirá una pestaña nueva donde podrás definir el esquema.
- Define el ID de esquema como
bigtable-change-stream-schema. - Asigna el valor Avro al tipo de esquema.
- Pegue lo siguiente como definición de esquema. Puedes consultar más información sobre el esquema en la página de documentación de la plantilla.
{ "name" : "ChangelogEntryMessage", "type" : "record", "namespace" : "com.google.cloud.teleport.bigtable", "fields" : [ { "name" : "rowKey", "type" : "bytes"}, { "name" : "modType", "type" : { "name": "ModType", "type": "enum", "symbols": ["SET_CELL", "DELETE_FAMILY", "DELETE_CELLS", "UNKNOWN"]} }, { "name": "isGC", "type": "boolean" }, { "name": "tieBreaker", "type": "int"}, { "name": "columnFamily", "type": "string"}, { "name": "commitTimestamp", "type" : "long"}, { "name" : "sourceInstance", "type" : "string"}, { "name" : "sourceCluster", "type" : "string"}, { "name" : "sourceTable", "type" : "string"}, { "name": "column", "type" : ["null", "bytes"]}, { "name": "timestamp", "type" : ["null", "long"]}, { "name": "timestampFrom", "type" : ["null", "long"]}, { "name": "timestampTo", "type" : ["null", "long"]}, { "name" : "value", "type" : ["null", "bytes"]} ] }- Haga clic en Crear para crear el esquema.
- Define el ID de esquema como
Cierra la pestaña Crear esquema, actualiza la lista de esquemas y selecciona el esquema que acabas de definir.
Haz clic en Crear para crear el tema.
- En la página Detalles del tema
bigtable-change-stream-topic, haz clic en Activar función de Cloud . - En el campo Nombre de la función, introduce el nombre
bt-ps-tutorial-function. - En la sección Código fuente, haz clic en el desplegable Tiempo de ejecución y, a continuación, selecciona el tiempo de ejecución y el lenguaje de programación que quieras. Se genera un
hello worldque imprime el flujo de cambios a medida que se recibe. Consulta la documentación para obtener más información sobre cómo escribir funciones de Cloud Run. - Usa los valores predeterminados del resto de los campos.
- Haz clic en Desplegar función.
En la Google Cloud consola, ve a la página de Bigtable Instancias.
Haga clic en el ID de la instancia que esté usando en este tutorial.
Si no tienes ninguna instancia disponible, crea una con las configuraciones predeterminadas en una región cercana.
En el panel de navegación de la izquierda, haga clic en Tablas.
Haz clic en Crear tabla.
Asigna un nombre a la tabla
change-streams-pubsub-tutorial.Añade una familia de columnas llamada
cf.Selecciona Habilitar flujo de cambios.
Haz clic en Crear.
- En la página Tablas de Bigtable, busca tu tabla.
change-streams-pubsub-tutorial - En la columna Cambio de flujo, haga clic en Conectar.
- En el cuadro de diálogo, selecciona Pub/Sub.
- Haz clic en Crear tarea de Dataflow.
- En la página Crear tarea de Dataflow, asigna el nombre del tema de salida de Pub/Sub:
bigtable-change-stream-topic. - Asigna el ID de perfil de aplicación de Bigtable a
default. - Haz clic en Ejecutar trabajo.
- Espera a que el estado del trabajo sea Iniciando o En curso antes de continuar. Tarda unos 5 minutos una vez que se pone en cola.
En Cloud Shell, escribe algunas filas en Bigtable para que el registro de cambios pueda escribir algunos datos en el flujo de Pub/Sub. Siempre que escribas los datos después de crear el trabajo, los cambios aparecerán. No tienes que esperar a que el estado del trabajo sea
running.cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user123 cf:col1=abc cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user546 cf:col1=def cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user789 cf:col1=ghiEn la Google Cloud consola, ve a la página Suscripciones de Pub/Sub .
Haz clic en la suscripción creada automáticamente para tu tema.
bigtable-change-stream-topicDebe llamarsebigtable-change-stream-topic-sub.Ve a la pestaña Mensajes.
Haz clic en Extraer.
Consulta la lista de mensajes y los datos que has escrito.

En la Google Cloud consola, ve a Cloud Run functions.
Haz clic en tu función
bt-ps-tutorial-function.Ve a la pestaña Registros.
Asegúrate de que Gravedad esté configurado como Información como mínimo para poder ver los registros.
Explora los registros y consulta los datos que has escrito.
En la Google Cloud consola, ve a la página de Bigtable Instancias.
Haga clic en el ID de la instancia que esté usando en este tutorial.
En el panel de navegación de la izquierda, haga clic en Tablas.
Busca la tabla
change-streams-pubsub-tutorial.Haz clic en Editar.
Desmarca Habilitar flujo de cambios.
Haz clic en Guardar.
Abre el menú adicional de la tabla.
Haz clic en Eliminar e introduce el nombre de la tabla para confirmar la acción.
En la Google Cloud consola, ve a la página Trabajos de Dataflow.
Selecciona el trabajo de streaming en la lista de trabajos.
En la navegación, haz clic en Detener.
En el cuadro de diálogo Detener tarea, cancela tu canalización y, a continuación, haz clic en Detener tarea.
En la Google Cloud consola, ve a la página Temas de Pub/Sub.
Selecciona el tema
bigtable-change-stream-topic.Haz clic en Eliminar y confirma la acción.
En la barra lateral, haz clic en Suscripciones.
Selecciona la suscripción a
bigtable-change-stream-topic-sub.Haz clic en Eliminar y confirma la acción.
En la Google Cloud consola, ve a Cloud Run functions.
Selecciona la función
bt-ps-tutorial-function.Haz clic en Eliminar y confirma la acción.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
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.
Crear un tema de Pub/Sub
Opcional: Crear una función de Cloud Run
Puede que quieras procesar el flujo de Pub/Sub con una función de Cloud Run.
Crear una tabla con un flujo de cambios habilitado
Inicializar un flujo de procesamiento de datos para capturar el flujo de cambios
Escribir datos en Bigtable
Ver los registros de cambios en Pub/Sub
Opcional: Ver los cambios en los registros de Cloud Run Functions
Si has creado una función de Cloud Run Functions, puedes ver los cambios en los registros.
El resultado es similar al siguiente:
Pub/Sub message: {"rowKey":"user789","modType":"SET_CELL","isGC":false,"tieBreaker":0,"columnFamily":"cf","commitTimestamp":1695653833064548,"sourceInstance":"YOUR-INSTANCE","sourceCluster":"YOUR-INSTANCE-c1","sourceTable":"change-streams-pubsub-tutorial","column":{"bytes":"col1"},"timestamp":{"long":1695653832278000},"timestampFrom":null,"timestampTo":null,"value":{"bytes":"ghi"}}
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.