Neste tutorial, mostramos como usar o modelo de fluxos de fluxo de alterações para o Pub/Sub , incluindo como definir um tópico e configurar o modelo. Você tem a opção de criar uma função do Cloud Run na linguagem de programação da sua escolha, que é acionada pelo fluxo de eventos.
Este tutorial é destinado a usuários técnicos familiarizados com o Bigtable, a escrita de códigos e os serviços de fluxo de eventos.
Objetivos
Este tutorial mostra como fazer o seguinte:
- Criar uma tabela do Bigtable com um fluxo de alterações ativado
- Criar um tópico do Pub/Sub com o esquema de fluxo de alterações do Bigtable.
- Implantar um fluxo de alterações do Bigtable em um pipeline do Pub/Sub no Dataflow usando o modelo.
- Ver o fluxo de eventos no Pub/Sub diretamente ou nos registros de uma função do Cloud Run.
Custos
Neste documento, você usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- 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. - Atualize e instale a
cbtCLI .gcloud components update gcloud components install cbt
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.
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Criar um tópico do Pub/Sub
No Google Cloud console, acesse a página Tópicos do Pub/Sub.
Selecione Criar tópico.
Defina o ID como
bigtable-change-stream-topic.Selecione Usar um esquema.
No menu suspenso Selecionar um esquema do Pub/Sub, clique em Criar novo esquema. Isso abre uma nova guia para definir o esquema.
- Defina o ID do esquema como
bigtable-change-stream-schema. - Defina o tipo de esquema como Avro.
- Cole o código abaixo como a definição do esquema. Mais informações sobre o esquema podem ser encontradas na página de documentação do modelo.
{ "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"]} ] }- Clique em Criar para criar o esquema.
- Defina o ID do esquema como
Feche a guia Criar esquema , atualize a lista de esquemas e selecione o esquema recém-definido.
Clique em Criar para criar o tópico.
Opcional: criar uma função do Cloud Run
É recomendável processar o fluxo do Pub/Sub com uma função do Cloud Run.
- Na página Detalhes do tópico
bigtable-change-stream-topic, clique em Acionar função do Cloud . - No campo Nome da função, digite o nome
bt-ps-tutorial-function. - Na seção Código-fonte, clique no menu suspenso Ambiente de execução e selecione o ambiente de execução e a linguagem de programação que preferir. É gerado um
hello worldque mostra o fluxo de alterações à medida que ele chega. Consulte a documentação para saber mais sobre como escrever funções do Cloud Run. - Use os valores padrão para todos os outros campos.
- Clique em Implantar função.
Criar uma tabela com um fluxo de alterações ativado
No Google Cloud console, acesse a página Instâncias do Bigtable.
Clique no ID da instância que você está usando neste tutorial.
Se você não tiver uma instância disponível, crie uma com as configurações padrão em uma região perto de você.
No painel de navegação à esquerda, clique em Tabelas.
Clique em Criar uma tabela.
Nomeie a tabela como
change-streams-pubsub-tutorial.Adicione um grupo de colunas chamado
cf.Selecione Ativar fluxo de alterações.
Clique em Criar.
Inicializar um pipeline de dados para capturar o fluxo de alterações
- Na página Tabelas do Bigtable, encontre sua tabela
change-streams-pubsub-tutorial. - Na coluna Fluxo de alterações, clique em Conectar.
- Na caixa de diálogo, selecione Pub/Sub.
- Clique em Criar job do Dataflow.
- Na página Criar job do Dataflow, defina o nome do tópico de saída do Pub/Sub como:
bigtable-change-stream-topic. - Defina o ID do perfil de aplicativo do Bigtable como
default. - Cliquem em Executar job.
- Aguarde o status do job ser Iniciando ou Em execução antes de continuar. Leva cerca de cinco minutos assim que job é colocado na fila.
Gravar alguns dados no Bigtable
No Cloud Shell, escreva algumas linhas no Bigtable para que o registro de alterações possa gravar alguns dados no fluxo do Pub/Sub. Se você gravar os dados após a criação do job, as alterações aparecerão. Não é necessário esperar que o status do job seja
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=ghi
Ver os registros de alterações no Pub/Sub
No Google Cloud console, acesse a página Assinaturas do Pub/Sub.
Clique na assinatura criada automaticamente para seu tópico
bigtable-change-stream-topic. O nome dele precisa serbigtable-change-stream-topic-sub.Acesse a guia Mensagens.
Clique em Pull.
Explore a lista de mensagens e veja os dados que você escreveu.

Opcional: ver as alterações nos registros das funções do Cloud Run
Se você criou uma função do Cloud Run functions, é possível ver as alterações nos registros.
No Google Cloud console, acesse Cloud Run functions.
Clique na sua função
bt-ps-tutorial-function.Acesse a guia Registros.
Verifique se a Gravidade está definida como pelo menos Informações para ser possível ver os registros.
Analise os registros e veja os dados que você gravou.
A saída será assim:
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"}}
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir a tabela do Bigtable
No Google Cloud console, acesse a página Instâncias do Bigtable.
Clique no ID da instância que você está usando neste tutorial.
No painel de navegação à esquerda, clique em Tabelas.
Localize a tabela
change-streams-pubsub-tutorial.Clique em Editar.
Desmarque Ativar fluxo de alterações.
Clique em Salvar.
Abra o menu flutuante da tabela.
Clique em Excluir e insira o nome da tabela para confirmar.
Interromper o pipeline de fluxo de alterações
No Google Cloud console, acesse a página Jobs do Dataflow.
Selecione o job de streaming na lista de jobs.
Na navegação, clique em Parar.
Na caixa de diálogo Interromper job, cancele o pipeline e clique em Interromper job.
Excluir o tópico e a assinatura do Pub/Sub
No Google Cloud console, acesse a página Tópicos do Pub/Sub.
Selecione o tópico
bigtable-change-stream-topic.Clique em Excluir e confirme.
Clique em Assinaturas na barra lateral.
Selecione a assinatura
bigtable-change-stream-topic-sub.Clique em Excluir e confirme.
Excluir a função do Cloud Run
No Google Cloud console, acesse Cloud Run functions.
Selecione a função
bt-ps-tutorial-function.Clique em Excluir e confirme.