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.createno projeto -
pubsub.topics.attachSubscriptionno 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
No Google Cloud console, acesse a página IAM.
Selecione Incluir concessões de papel fornecidas pelo Google.
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.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
No Google Cloud console, acesse a página Bigtable > Instâncias.
Na página Instâncias, marque a caixa de seleção ao lado do nome da instância.
Se o painel de informações não estiver visível, clique em Mostrar painel de informações.
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.Na lista Atribuir papéis, selecione Usuário do Bigtable.
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.
No Google Cloud console, acesse a página IAM.
Selecione Incluir concessões de papel fornecidas pelo Google.
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.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.getAccessTokenna conta de serviço gerenciado pelo usuário.O usuário que cria a assinatura precisa ter a permissão
iam.serviceAccounts.actAsna 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
BYTEStipo.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 |