Este documento mostra como confirmar uma revisão de esquema para tópicos do Pub/Sub.
Antes de começar
- Entenda como os esquemas do Pub/Sub funcionam.
- Crie um esquema.
Papéis e permissões necessárias
Para receber as permissões necessárias para confirmar uma revisão de esquema e gerenciar esquemas,
peça ao administrador para conceder a você o
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 confirmar uma revisão de esquema 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 confirmar uma revisão de esquema 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
-
Excluir 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
-
Fazer o rollback de um esquema:
pubsub.schemas.rollback
-
Valide uma mensagem:
pubsub.schemas.validate
-
Acesse 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 a principais, como usuários, grupos, domínios ou contas de serviço. Você pode criar um esquema em um projeto e anexá-lo a um tópico localizado em outro projeto. Verifique se você tem as permissões necessárias para cada projeto.
Revisar um esquema
É possível confirmar uma revisão de esquema usando o console do Google Cloud, a CLI gcloud, a API Pub/Sub ou as bibliotecas de cliente do Cloud.
Confira a seguir algumas diretrizes para confirmar uma revisão de esquema:
É possível revisar um esquema com restrições específicas:
Para esquemas do Protocol Buffer, é possível adicionar ou remover campos opcionais. Não é possível adicionar ou excluir outros campos. Também não é possível editar nenhum campo existente.
Para esquemas do Avro, consulte a documentação do Avro para conferir as regras sobre a resolução de esquemas. Uma nova revisão precisa seguir as regras, como se fosse o esquema do leitor e do escritor.
Um esquema pode ter no máximo 20 revisões por vez. Se você exceder o limite, exclua uma revisão de esquema antes de criar outra.
Cada revisão tem um ID exclusivo associado a ela. O ID da revisão é um UUID de oito caracteres gerado automaticamente.
Quando você atualiza o intervalo de revisões ou a revisão de um esquema usado para validação de tópicos, pode levar alguns minutos para que as mudanças entrem em vigor.
Console
Para criar uma revisão de esquema, siga estas etapas:
No console do Google Cloud, acesse a página Esquemas do Pub/Sub.
Clique no ID do esquema de um esquema existente.
A página Detalhes do esquema é aberta.
Clique em Criar revisão.
A página Criar revisão de esquema é aberta.
Faça as mudanças necessárias.
Por exemplo, para o esquema de exemplo no Avro que você criou em Criar um esquema, adicione um campo opcional chamado
Price
da seguinte maneira:{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false }, { "name": "Price", "type": "double", "default": "0.0" } ] }
Clique em Validar definição para conferir se a definição do esquema está correta.
Também é possível validar as mensagens do esquema.
Clique em Test message para testar uma mensagem de exemplo.
Na janela Test message, selecione um tipo de Codificação da mensagem.
No Corpo da mensagem, digite uma mensagem de teste.
Confira um exemplo de mensagem para o esquema de teste. Neste exemplo, selecione a Codificação da mensagem como
JSON
.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
Clique em Testar.
Clique em Confirmar para salvar o esquema.
gcloud
gcloud pubsub schemas commit 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 no arquivo:
gcloud pubsub schemas commit 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 arquivo com a definição do esquema, formatado de acordo com o tipo de esquema escolhido.
REST
Para confirmar uma revisão de esquema, envie uma solicitação POST como esta:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID:commit 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 "name": SCHEMA_NAME }
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.
- SCHEMA_NAME é o nome de um esquema existente.
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 a revisão foi criada.
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
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
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
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
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
Depois de confirmar uma revisão de esquema, você pode acessar os detalhes da nova revisão na página Esquemas.