Este documento explica como criar uma assinatura do Pub/Sub com transformações de mensagem única (SMTs, na sigla em inglês).
As SMTs de assinatura permitem modificações leves nos dados e atributos da mensagem diretamente no Pub/Sub. Esse recurso permite a limpeza, a filtragem ou a conversão de formato de dados antes que as mensagens sejam enviadas a um cliente de assinante.
Para criar uma assinatura com SMTs, use o console Google Cloud , a Google Cloud CLI, a biblioteca de cliente ou a API Pub/Sub.
Antes de começar
Saiba mais sobre o serviço Pub/Sub e a terminologia dele.
Saiba mais sobre SMTs.
Papéis e permissões necessárias
Para receber as permissões necessárias para criar uma assinatura com SMTs, peça ao administrador para conceder a você o papel do IAM de
Editor do Pub/Sub (roles/pubsub.editor
) no seu 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 com SMTs. Para conferir as permissões exatas 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 com SMTs:
-
Conceda a permissão de criar uma assinatura no projeto:
pubsub.subscriptions.create
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Dependendo do tipo de assinatura, talvez seja necessário ter mais permissões. Para descobrir a lista exata de permissões, consulte o documento que discute a criação da assinatura específica. Por exemplo, se você estiver criando uma assinatura do BigQuery com SMTs, consulte a página Criar assinaturas do BigQuery.
Se você criar uma assinatura em um projeto diferente do tópico,
conceda o papel roles/pubsub.subscriber
ao principal do
projeto que contém a assinatura no projeto que contém o tópico.
É possível configurar o controle de acesso no nível do projeto e do recurso individual.
Criar uma assinatura com SMTs
Antes de criar uma assinatura com SMTs, consulte a documentação sobre as Propriedades de uma assinatura.
Os exemplos a seguir assumem que você quer criar uma assinatura com essa SMT de função definida pelo usuário (UDF). Para mais informações sobre UDFs, consulte a Visão geral de UDFs.
function redactSSN(message, metadata) {
const data = JSON.parse(message.data);
delete data['ssn'];
message.data = JSON.stringify(data);
return message;
}
Console
No console Google Cloud , acesse a página Assinaturas do Pub/Sub.
-
Clique em Criar assinatura.
A página Criar assinatura é aberta.
-
No campo ID da assinatura, insira um ID para a assinatura. Para mais informações sobre como nomear assinaturas, consulte as diretrizes de nomenclatura.
-
Em Transformações, clique em Adicionar uma transformação.
-
Insira um nome de função. Por exemplo,
redactSSN
. -
Se você não quiser usar o SMT com sua assinatura imediatamente, clique na opção Disable transform. Isso ainda vai salvar o SMT, mas ele não será executado à medida que as mensagens fluem pela assinatura.
-
Insira uma nova transformação. Exemplo:
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }
-
O Pub/Sub oferece uma função de validação que permite validar um SMT. Clique em Validar para validar a transformação.
-
Se quiser adicionar outra transformação, clique em Adicionar uma transformação.
- Para organizar todos os SMTs em uma ordem específica, use as setas para cima e para baixo. Para remover um SMT, clique no botão de exclusão.
-
O Pub/Sub oferece uma função de teste que permite verificar o resultado da execução do SMT em uma mensagem de exemplo. Para testar as SMTs, clique em Testar transformação.
-
Na janela Test transform, selecione a função que você quer testar.
-
Na janela Input message, digite uma mensagem de exemplo.
-
Se você quiser adicionar atributos de mensagem, clique em Adicionar um atributo e digite um ou mais pares de chave-valor.
-
Clique em Testar. O resultado da aplicação das SMTs na mensagem é exibido.
-
Feche a janela para interromper o teste de SMTs em mensagens de exemplo.
-
Clique em Criar para criar a assinatura.
gcloud
-
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.
-
O Pub/Sub oferece uma função de validação que permite validar um SMT. Execute o comando
gcloud pubsub message-transforms validate
:gcloud pubsub message-transforms validate --message-transform-file=TRANSFORM_FILE
Substitua:
-
TRANSFORM_FILE: o caminho para o arquivo YAML ou JSON que contém um único SMT.
Confira um exemplo de arquivo de transformação YAML:
javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
O Pub/Sub oferece uma função de teste que permite verificar o resultado da execução de uma ou mais SMTs em uma mensagem de exemplo. Execute o comando
gcloud pubsub message-transforms test
:gcloud pubsub message-transforms test --message-transforms-file=TRANSFORMS_FILE
Substitua:
-
TRANSFORMS_FILE: o caminho para o arquivo YAML ou JSON que contém um ou mais SMTs.
Confira um exemplo de um arquivo de transformação YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
Para criar a assinatura, execute o comando
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_NAME \ --message-transforms-file=TRANSFORMS_FILE
Substitua:
-
SUBSCRIPTION_ID: o ID ou nome da assinatura que você quer criar. Para conferir diretrizes sobre como nomear uma assinatura, consulte Nomes de recursos. O nome de uma assinatura é imutável.
-
TOPIC_NAME: o nome do tópico a que você quer se inscrever, no formato
projects/PROJECT_ID/topics/TOPIC_ID
. -
TRANSFORMS_FILE: o caminho para o arquivo YAML ou JSON que contém uma ou mais SMTs.
Confira um exemplo de um arquivo de transformação YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.