Este documento mostra como confirmar uma revisão do esquema para tópicos do Pub/Sub.
Antes de começar
- Compreenda como funcionam os esquemas do Pub/Sub.
- Crie um esquema.
Funções e autorizações necessárias
Para receber as autorizações de que
precisa para confirmar uma revisão do esquema e gerir esquemas,
peça ao seu administrador para lhe conceder a função IAM de
Editor do Pub/Sub (roles/pubsub.editor
)
no seu projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para confirmar uma revisão do esquema e gerir esquemas. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para confirmar uma revisão do esquema e gerir esquemas:
-
Crie um esquema:
pubsub.schemas.create
-
Anexe o esquema ao tópico:
pubsub.schemas.attach
-
Confirme uma revisão do esquema:
pubsub.schemas.commit
-
Elimine um esquema ou uma revisão de esquema:
pubsub.schemas.delete
-
Obtenha um esquema ou revisões de esquemas:
pubsub.schemas.get
-
Esquemas de listas:
pubsub.schemas.list
-
Revisões do esquema da lista:
pubsub.schemas.listRevisions
-
Reverter um esquema:
pubsub.schemas.rollback
-
Valide uma mensagem:
pubsub.schemas.validate
-
Obtenha a Política IAM para um esquema:
pubsub.schemas.getIamPolicy
-
Configure a Política IAM para um esquema:
pubsub.schemas.setIamPolicy
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Pode conceder funções e autorizações a responsáveis, como utilizadores, grupos, domínios ou contas de serviço. Pode criar um esquema num projeto e anexá-lo a um tópico localizado num projeto diferente. Certifique-se de que tem as autorizações necessárias para cada projeto.
Revise um esquema
Pode confirmar uma revisão do esquema através da Google Cloud consola, da CLI gcloud, da API Pub/Sub ou das bibliotecas cliente da nuvem.
Seguem-se algumas diretrizes para confirmar uma revisão do esquema:
Pode rever um esquema dentro de restrições específicas:
Para esquemas de Protocol Buffer, pode adicionar ou remover campos opcionais. Não pode adicionar nem eliminar outros campos. Também não pode editar nenhum campo existente.
Para esquemas Avro, consulte a documentação do Avro para ver as regras sobre a resolução de esquemas. Uma nova revisão tem de seguir as regras como se fosse o esquema do leitor e o esquema do escritor.
Um esquema pode ter um máximo de 20 revisões em simultâneo. Se exceder o limite, elimine uma revisão do esquema antes de criar outra.
Cada revisão tem um ID de revisão exclusivo associado. O ID da revisão é um UUID de oito carateres gerado automaticamente.
Quando atualiza o intervalo de revisões ou a revisão de um esquema usado para a validação de tópicos, as alterações podem demorar alguns minutos a entrar em vigor.
Consola
Para criar uma revisão do esquema, siga estes passos:
Na Google Cloud consola, aceda à página Esquemas do Pub/Sub.
Clique no ID do esquema de um esquema existente.
É apresentada a página Detalhes do esquema do esquema.
Clique em Criar revisão.
É apresentada a página Criar revisão do esquema.
Faça as alterações necessárias.
Por exemplo, para o esquema de amostra em Avro que criou em Crie um esquema, pode adicionar um campo opcional adicional denominado
Price
da seguinte forma:{ "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 verificar se a definição do esquema está correta.
Também pode validar as mensagens para o esquema.
Clique em Testar mensagem para testar uma mensagem de exemplo.
Na janela Mensagem de teste, selecione um tipo de Codificação de mensagens.
No Corpo da mensagem, introduza uma mensagem de teste.
Por exemplo, segue-se uma mensagem de exemplo para o esquema de teste. Neste exemplo, selecione a Codificação de mensagens como
JSON
.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
Clique em Testar.
Clique em Confirmar para guardar o esquema.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Onde:
- 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 pode especificar a definição do esquema no ficheiro:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Onde:
- SCHEMA_TYPE é
avro
ouprotocol-buffer
. - SCHEMA_DEFINITION_FILE é um
string
que contém o caminho para o ficheiro com a definição do esquema, formatado de acordo com o tipo de esquema escolhido.
REST
Para confirmar uma revisão do esquema, envie um pedido POST semelhante ao seguinte:
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 seguintes campos no corpo do pedido:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE "name": SCHEMA_NAME }
Onde:
- SCHEMA_TYPE é
AVRO
ouPROTOCOL_BUFFER
. - SCHEMA_DEFINITION é uma string que contém a definição do esquema, formatada de acordo com o tipo de esquema escolhido.
- SCHEMA_NAME é o nome de um esquema existente.
O corpo da resposta deve conter uma representação JSON de um recurso de esquema. Por exemplo:
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
Onde:
- REVISION_ID é o ID gerado pelo servidor para a revisão.
- REVISION_CREATE_TIME é a data/hora ISO 8601 em que a revisão foi criada.
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Avro
Proto
C++
Antes de experimentar este exemplo, siga as instruções de configuração do C++ no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.
Avro
Proto
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Avro
Proto
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Avro
Proto
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Avro
Proto
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Avro
Proto
Depois de confirmar uma revisão do esquema, pode ver os detalhes da nova revisão na página Esquemas.