Transmita alterações para o Pub/Sub através do acionador de função do Cloud Run opcional

Este tutorial mostra como usar o modelo Bigtable change streams to Pub/Sub, incluindo como configurar um tópico e configurar o modelo. Opcionalmente, pode criar uma função do Cloud Run no idioma de programação à sua escolha, que é acionada pela stream de eventos.

Este tutorial destina-se a utilizadores técnicos que estão familiarizados com o Bigtable, a escrita de código e os serviços de streaming de eventos.

Objetivos

Este tutorial mostra como fazer o seguinte:

  • Crie uma tabela do Bigtable com uma stream de alterações ativada.
  • Crie um tópico Pub/Sub com o esquema do fluxo de alterações do Bigtable.
  • Implemente uma stream de alterações do Bigtable numa pipeline do Pub/Sub no Dataflow através do modelo.
  • Veja a stream de eventos no Pub/Sub diretamente ou nos registos de uma função do Cloud Run.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

Antes de começar

    Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

    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

    • 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    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.

    Enable the APIs

    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

    • 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    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.

    Enable the APIs

    In the Google Cloud console, activate Cloud Shell.

    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.

  1. Atualize e instale a CLI cbt .
    gcloud components update
    gcloud components install cbt
  2. Crie um tópico do Pub/Sub

    1. Na Google Cloud consola, aceda à página Tópicos do Pub/Sub.

      Aceda a Tópicos

    2. Clique em Criar tópico.

    3. Defina o ID como bigtable-change-stream-topic.

    4. Selecione Usar um esquema.

    5. No menu pendente Selecionar um esquema do Pub/Sub, clique em Criar novo esquema. Esta ação abre um novo separador onde define o esquema.

      1. Defina o ID do esquema como bigtable-change-stream-schema.
      2. Defina o tipo de esquema como Avro.
      3. Cole o seguinte como a definição do esquema. Pode encontrar mais informações acerca do esquema 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"]}
          ]
        }
      
      1. Clique em Criar para criar o esquema.
    6. Feche o separador Criar esquema, atualize a lista de esquemas e selecione o esquema recém-definido.

    7. Clique em Criar para criar o tópico.

    Opcional: crie uma função do Cloud Run

    Pode querer processar a stream do Pub/Sub com uma função do Cloud Run.

    1. Na página Detalhes do tópico bigtable-change-stream-topic, clique em Acionar função do Google Cloud .
    2. No campo Nome da função, introduza o nome bt-ps-tutorial-function.
    3. Na secção Código fonte, clique no menu pendente Tempo de execução e, de seguida, selecione o tempo de execução e a linguagem de programação da sua escolha. É gerado um hello world que imprime a stream de alterações à medida que chega. Consulte a documentação para saber mais sobre como escrever funções do Cloud Run.
    4. Use os valores predefinidos para todos os outros campos.
    5. Clique em Implementar função.

    Crie uma tabela com uma stream de alterações ativada

    1. Na Google Cloud consola, aceda à página Instâncias do Bigtable.

      Aceda a Instâncias

    2. Clique no ID da instância que está a usar para este tutorial.

      Se não tiver uma instância disponível, crie uma instância com as configurações predefinidas numa região perto de si.

    3. No painel de navegação do lado esquerdo, clique em Tabelas.

    4. Clique em Criar tabela.

    5. Atribua um nome à tabela change-streams-pubsub-tutorial.

    6. Adicione uma família de colunas com o nome cf.

    7. Selecione Ativar stream de alterações.

    8. Clique em Criar.

    Inicialize um pipeline de dados para capturar a stream de alterações

    1. Na página Tabelas do Bigtable, encontre a sua tabela change-streams-pubsub-tutorial.
    2. Na coluna Alterar stream, clique em Associar.
    3. Na caixa de diálogo, selecione Pub/Sub.
    4. Clique em Criar tarefa do Dataflow.
    5. Na página Criar tarefa do Dataflow, defina o nome do tópico do Pub/Sub de saída como: bigtable-change-stream-topic.
    6. Defina o ID do perfil da aplicação do Bigtable como default.
    7. Clique em Executar tarefa.
    8. Aguarde até que o estado da tarefa seja A iniciar ou Em execução antes de continuar. Demora cerca de 5 minutos assim que a tarefa é colocada em fila.

    Escreva alguns dados no Bigtable

    1. No Cloud Shell, escreva algumas linhas no Bigtable para que o registo de alterações possa escrever alguns dados no stream do Pub/Sub. Desde que escreva os dados após a criação da tarefa, as alterações aparecem. Não tem de esperar que o estado da tarefa se torne 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
      

    Veja os registos de alterações no Pub/Sub

    1. Na Google Cloud consola, aceda à página Subscrições do Pub/Sub.

      Aceder a Subscrições

    2. Clique na subscrição criada automaticamente para o seu tópico bigtable-change-stream-topic. Deve ter o nome bigtable-change-stream-topic-sub.

    3. Aceda ao separador Mensagens.

    4. Clique em Extrair.

    5. Explore a lista de mensagens e veja os dados que escreveu.

      Altere as mensagens do registo no Pub/Sub

    Opcional: veja as alterações nos registos das funções do Cloud Run

    Se criou uma função do Cloud Run, pode ver as alterações nos registos.

    1. Na Google Cloud consola, aceda a Funções do Cloud Run.

      Aceder às funções do Cloud Run

    2. Clique na sua função bt-ps-tutorial-function.

    3. Aceda ao separador Registos.

    4. Certifique-se de que a Gravidade está definida, pelo menos, como Informações para poder ver os registos.

    5. Explore os registos e veja os dados que escreveu.

    O resultado tem um aspeto semelhante ao seguinte:

    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 incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

    Elimine a tabela do Bigtable

    1. Na Google Cloud consola, aceda à página Instâncias do Bigtable.

      Aceda a Instâncias

    2. Clique no ID da instância que está a usar para este tutorial.

    3. No painel de navegação do lado esquerdo, clique em Tabelas.

    4. Encontre a tabela change-streams-pubsub-tutorial.

    5. Clique em Edit.

    6. Desmarque a opção Ativar stream de alterações.

    7. Clique em Guardar.

    8. Abra o menu adicional da tabela.

    9. Clique em Eliminar e introduza o nome da tabela para confirmar.

    Pare a pipeline de streams de alterações

    1. Na Google Cloud consola, aceda à página Tarefas do Dataflow.

      Aceder a Empregos

    2. Selecione a tarefa de streaming na lista de tarefas.

    3. Na navegação, clique em Parar.

    4. Na caixa de diálogo Parar tarefa, cancele o pipeline e, de seguida, clique em Parar tarefa.

    Elimine o tópico e a subscrição do Pub/Sub

    1. Na Google Cloud consola, aceda à página Tópicos do Pub/Sub.

      Aceda a Tópicos

    2. Selecione o tópico bigtable-change-stream-topic.

    3. Clique em Eliminar e confirme.

    4. Clique em Subscrições na barra lateral.

    5. Selecione a subscrição do bigtable-change-stream-topic-sub.

    6. Clique em Eliminar e confirme.

    Elimine a função do Cloud Run

    1. Na Google Cloud consola, aceda a Funções do Cloud Run.

      Aceder às funções do Cloud Run

    2. Selecione a função bt-ps-tutorial-function.

    3. Clique em Eliminar e confirme.

    O que se segue?