Neste documento, mostramos como criar esquemas para tópicos do Pub/Sub.
Antes de começar
Antes de criar um esquema, faça o seguinte:
- Saiba mais sobre os tópicos e o fluxo de trabalho de publicação.
- Entenda como os esquemas do Pub/Sub funcionam.
- Crie um tópico.
Papéis e permissões necessárias
Para ter as permissões necessárias para criar e gerenciar esquemas,
peça ao administrador para conceder a você
Papel do IAM Editor do Pub/Sub (roles/pubsub.editor
) 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 e gerenciar esquemas. 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 e gerenciar esquemas:
-
Criar esquema:
pubsub.schemas.create
-
Anexar esquema ao tópico:
pubsub.schemas.attach
-
Confirme uma revisão de esquema:
pubsub.schemas.commit
-
Exclua um esquema ou uma revisão de esquema:
pubsub.schemas.delete
-
Acessar um esquema ou revisões de esquema:
pubsub.schemas.get
-
Esquemas de lista:
pubsub.schemas.list
-
Listar revisões de esquema:
pubsub.schemas.listRevisions
-
Reverta um esquema:
pubsub.schemas.rollback
-
Valide uma mensagem:
pubsub.schemas.validate
-
Encontre a política do IAM para um esquema:
pubsub.schemas.getIamPolicy
-
Configure a política do IAM para um esquema:
pubsub.schemas.setIamPolicy
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
É possível conceder papéis e permissões aos principais, como usuários, grupos domínios ou contas de serviço. É possível criar um esquema em um projeto anexar a um tópico localizado em um projeto diferente. Verifique se você tem as permissões necessárias para para cada projeto.
criar um esquema
É possível criar um esquema usando o console do Google Cloud, a CLI gcloud, a API Pub/Sub ou as bibliotecas de cliente do Cloud. Os itens a seguir são algumas diretrizes para criar um esquema:
Para que um esquema funcione com o Pub/Sub, você precisa definir apenas um tipo de nível superior. Instruções de importação que fazem referência a outros tipos não têm suporte.
É possível associar o mesmo esquema a vários tópicos.
É possível testar manualmente se uma mensagem é validada em relação a um esquema.
Console
Para criar um esquema, siga estas etapas:
No console do Google Cloud, acesse a página Esquemas do Pub/Sub.
Clique em Criar esquema.
No campo Schema ID, insira um ID para seu esquema.
Para saber como nomear um esquema, acesse Diretrizes para nomear um tópico, uma assinatura ou um snapshot.
Em Tipo de esquema, selecione Avro ou o buffer de protocolo.
Saiba mais sobre os tipos de esquema.
No campo Definição de esquema, insira a definição de Avro ou Buffer de protocolo para seu esquema.
Este é um exemplo de esquema no Avro.
{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false } ] }
Opcional: clique em Validar definição para verificar se a definição do esquema está correta.
A verificação de validação não confere a compatibilidade do esquema com as mensagens a serem publicadas. Teste as mensagens na próxima etapa.
Opcional: é possível testar se as mensagens com o esquema correto são publicadas.
Clique em Mensagem de teste.
Na janela Mensagem de teste, selecione um tipo de Codificação de mensagem.
Em Corpo da mensagem, insira uma mensagem de teste.
Clique em Testar.
Confira um exemplo de mensagem para o esquema de teste. Neste exemplo, selecione Codificação de mensagens como
JSON
.{"ProductName":"GreenOnions", "SKU":34543, "InStock":true}
Saia da página da mensagem de teste.
Clique em Criar para salvar o esquema.
gcloud
gcloud pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Em que:
- SCHEMA_TYPE é
avro
ouprotocol-buffer
. - SCHEMA_DEFINITION é um
string
que contém a definição do esquema, formatado de acordo com o tipo de esquema escolhido.
Também é possível especificar a definição do esquema em um arquivo:
gcloud pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Em que:
- SCHEMA_TYPE é
avro
ouprotocol-buffer
. - SCHEMA_DEFINITION_FILE é um
string
que contém o caminho para o com a definição do esquema, formatado de acordo com a tipo de esquema.
REST
Para criar um esquema, envie uma solicitação POST como a seguinte:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
Especifique os campos a seguir no corpo da solicitação:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE }
Em que:
- SCHEMA_TYPE é
avro
ouprotocol-buffer
. - SCHEMA_DEFINITION é uma string que contém a definição do esquema, formatado de acordo com o tipo de esquema escolhido.
O corpo da resposta precisa conter uma representação JSON de um recurso de esquema. Exemplo:
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
Em que:
- REVISION_ID é o ID gerado pelo servidor para a revisão.
- REVISION_CREATE_TIME é o carimbo de data/hora ISO 8601 em que o revisão foi criada.
C
Antes de tentar esse exemplo, siga as instruções de configuração do C em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C .
Avro
Proto
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
Avro
Proto
Go
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Avro
Proto
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Avro
Proto
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Avro
Proto
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Avro
Proto
PHP
Antes de tentar esse exemplo, siga as instruções de configuração do PHP em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub PHP.
Avro
Proto
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Avro
Proto
Ruby
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Avro
Proto
Após a criação de um esquema, consulte os detalhes do esquema na Esquemas.
É possível associar o esquema a um tópico.