Este documento explica como criar um tópico do Pub/Sub com transformações de mensagem única (SMTs, na sigla em inglês).
As SMTs de tópicos permitem modificações leves nos dados e atributos da mensagem diretamente no Pub/Sub. Esse recurso permite a limpeza, filtragem ou conversão de formato de dados antes que as mensagens sejam publicadas no tópico.
Para criar um tópico 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 um tópico 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 um tópico 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 um tópico com SMTs:
-
Conceda a permissão "Criar um tópico" no projeto:
pubsub.topics.create
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
É possível configurar o controle de acesso no nível do projeto e do recurso individual.
Criar um tópico com SMTs
Antes de criar um tópico com SMTs, consulte a documentação sobre as Propriedades de um tópico.
Os exemplos a seguir presumem que você quer criar um tópico 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 Tópicos do Pub/Sub.
-
Selecione Criar tópico.
A página Criar tópico é aberta.
-
No campo ID do tópico, insira um ID para o tópico. Para mais informações sobre como nomear tópicos, 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 a SMT com seu tópico imediatamente, clique na opção Desativar transformação. Isso ainda vai salvar o SMT, mas ele não será executado à medida que as mensagens fluem pelo tópico.
-
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 o tópico.
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 o tópico, execute o comando
gcloud pubsub topics create
:gcloud pubsub topics create TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILE
Substitua:
-
TOPIC_ID: o ID ou nome do tópico que você quer criar. Para conferir diretrizes sobre como nomear um tópico, consulte Nomes de recursos. O nome de um tópico é imutável.
-
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.