Criar assinaturas do Bigtable

Este documento descreve como criar uma assinatura do Bigtable no Pub/Sub. As assinaturas do Bigtable permitem gravar mensagens do Pub/Sub diretamente em uma tabela do Bigtable.

Para mais informações sobre esse tipo de assinatura, consulte Assinaturas do Bigtable.

Antes de começar

  • A tabela do Bigtable em que você quer gravar mensagens do Pub/Sub já precisa existir. Para mais informações, consulte Criar e gerenciar tabelas.

  • A tabela precisa ter um grupo de colunas chamado data. É possível adicionar o grupo de colunas ao criar a tabela.

  • Se você quiser gravar metadados de mensagens na tabela, ela também precisará ter um grupo de colunas chamado pubsub_metadata.

Papéis e permissões necessárias

Para receber as permissões necessárias para criar uma assinatura do Bigtable, peça ao administrador para conceder a você o papel de editor do Pub/Sub (roles/pubsub.editor) do IAM no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para criar uma assinatura do Bigtable. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para criar uma assinatura do Bigtable:

  • pubsub.subscriptions.create no projeto
  • pubsub.topics.attachSubscription no tópico

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Assinaturas entre projetos

Se você criar uma assinatura em um projeto para um tópico em outro projeto, será necessário ter a permissão pubsub.subscriptions.create no projeto em que você está criando a assinatura e a permissão pubsub.topics.attachSubscription no tópico.

Conceder papéis do IAM à conta de serviço

O Pub/Sub usa uma conta de serviço do Identity and Access Management (IAM) para acessar Google Cloud recursos. Para permitir que o Pub/Sub grave no Bigtable, conceda o papel de usuário do Bigtable (roles/bigtable.user) a essa conta de serviço.

Por padrão, o Pub/Sub usa o agente de serviço do Pub/Sub
(service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com). Também é possível especificar uma conta serviço gerenciado pelo usuário ao criar a assinatura do Bigtable.

Usar o agente de serviço do Pub/Sub

Para conceder o papel necessário ao agente de serviço do Pub/Sub, siga estas etapas. É possível conceder o papel no projeto ou na instância do Bigtable que contém a tabela.

Projeto

  1. No Google Cloud console, acesse a página IAM.

    Acessar IAM

  2. Selecione Incluir concessões de papel fornecidas pelo Google.

  3. Encontre a linha da conta de serviço do Cloud Pub/Sub (principal service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com) e clique em Editar principal.

  4. Clique em Adicionar outro papel e selecione o papel Usuário do Bigtable.

Para mais informações, consulte Conceder um papel do IAM usando o console.

Instância

  1. No Google Cloud console, acesse a página Bigtable > Instâncias.

    Acesse "Instâncias"

  2. Na página Instâncias, marque a caixa de seleção ao lado do nome da instância.

  3. Se o painel de informações não estiver visível, clique em Mostrar painel de informações.

  4. Clique em Adicionar principal e insira o identificador da conta de serviço no seguinte formato:

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com.

  5. Na lista Atribuir papéis, selecione Usuário do Bigtable.

  6. Clique em Salvar. O principal recebe o papel no recurso.

Também verifique se a conta de serviço do Pub/Sub tem o papel de agente de serviço do Pub/Sub. Isso permite que o Pub/Sub use a cota da API Admin do projeto da instância do Bigtable.

  1. No Google Cloud console, acesse a página IAM.

    Acessar IAM

  2. Selecione Incluir concessões de papel fornecidas pelo Google.

  3. Encontre a linha da conta de serviço do Cloud Pub/Sub (principal service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com) e clique em Editar principal.

  4. Na seção Atribuir papéis, se o papel Agente de serviço do Cloud Pub/Sub ainda não estiver presente, adicione-o clicando em Adicionar outro papel.

Usar uma conta de serviço personalizada

Se você conceder o papel de usuário do Bigtable ao agente de serviço do Pub/Sub, qualquer usuário com permissão para criar uma assinatura no seu projeto poderá gravar na tabela do Bigtable. Se você quiser fornecer permissões mais granulares, configure uma conta serviço gerenciado pelo usuário em vez disso.

As seguintes permissões são necessárias para configurar uma conta de serviço gerenciado pelo usuário para gravar no Bigtable:

  • A conta de serviço gerenciado pelo usuário precisa ter o papel de usuário do Bigtable.

  • A conta de serviço do Cloud Pub/Sub precisa ter a permissão iam.serviceAccounts.getAccessToken na conta de serviço gerenciado pelo usuário.

  • O usuário que cria a assinatura precisa ter a permissão iam.serviceAccounts.actAs na conta de serviço gerenciado pelo usuário.

Ao criar a assinatura, especifique a conta de serviço gerenciado pelo usuário. Para mais informações, consulte Criar uma assinatura do Bigtable.

Gravações da tabela do Bigtable

Esta seção descreve como uma assinatura do Bigtable grava mensagens do Pub/Sub em uma tabela.

Dados da mensagem

Uma assinatura do Bigtable grava os dados da mensagem do Pub/Sub em um grupo de colunas chamado data.

  • Cada linha contém os dados de uma mensagem.

  • A chave de linha é uma concatenação do ID da assinatura, um prefixo de salt do ID da mensagem e o ID da mensagem, no seguinte formato:

    "projects/PROJECT_NUMBER/subscriptions/SUBSCRIPTION_ID#SALT_PREFIX#MESSAGE_ID"

  • Os dados da mensagem são gravados em uma única coluna no grupo de colunas data. A coluna tem um qualificador de coluna de string vazia ("").

  • Os dados são gravados como um BYTES tipo.

  • O carimbo de data/hora da célula é o horário de publicação da mensagem.

Metadados das mensagens

Por padrão, a assinatura não grava metadados de mensagens na tabela. Opcionalmente, é possível ativar a gravação de metadados ao criar uma assinatura do Bigtable.

Se a gravação de metadados estiver ativada, a assinatura gravará os metadados da mensagem em um grupo de colunas chamado pubsub_metadata. Antes de criar a assinatura, verifique se a tabela tem um grupo de colunas com esse nome.

Para cada mensagem, a assinatura grava uma nova linha com as seguintes colunas no grupo de colunas pubsub_metadata.

Coluna Valor Tipo de dado
subscription_name O nome da assinatura String
message_id O ID da mensagem String
attributes Um objeto JSON que contém os atributos da mensagem