Este documento mostra como criar esquemas para tópicos do Pub/Sub.
Antes de começar
Antes de criar um esquema, conclua o seguinte:
- Saiba mais sobre os tópicos e o fluxo de trabalho de publicação.
- Compreenda como funcionam os esquemas do Pub/Sub.
- Crie um tópico.
Funções e autorizações necessárias
Para obter as autorizações de que
precisa para criar e gerir esquemas,
peça ao seu administrador para lhe conceder a função
Editor do Pub/Sub (roles/pubsub.editor
)
do IAM 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 criar 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 criar 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.
Crie um esquema
Pode criar um esquema através da Cloud de Confiance consola, da CLI gcloud, da API Pub/Sub ou das bibliotecas cliente do Google Cloud.
Antes de criar um esquema, reveja estas informações importantes sobre esquemas.
Consola
Para criar um esquema, siga estes passos:
Na Cloud de Confiance consola, aceda à página Esquemas do Pub/Sub.
Clique em Criar esquema.
No campo ID do esquema, introduza um ID para o seu esquema.
Para ver diretrizes sobre como atribuir um nome a um esquema, consulte o artigo Diretrizes para atribuir um nome a um tópico, uma subscrição ou uma imagem instantânea.
Para o Tipo de esquema, selecione Avro ou Protocol Buffer.
Saiba mais sobre os tipos de esquemas.
No campo Definição do esquema, introduza a definição Avro ou Protocol Buffer do seu esquema.
Por exemplo, segue-se um esquema de amostra em 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 verifica a compatibilidade do esquema com as mensagens a publicar. Teste as mensagens no passo seguinte.
Opcional: pode testar se as mensagens com o esquema correto são publicadas.
Clique em Testar mensagem.
Na janela Mensagem de teste, selecione um tipo de Codificação de mensagens.
No Corpo da mensagem, introduza uma mensagem de teste.
Clique em Testar.
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, "InStock":true}
Saia da página de mensagens de teste.
Clique em Criar para guardar o esquema.
gcloud
gcloud pubsub schemas create 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 num ficheiro:
gcloud pubsub schemas create 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 criar um esquema, envie um pedido POST da seguinte forma:
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 seguintes campos no corpo do pedido:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE }
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.
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.
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
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em 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
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
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
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
PHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP 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
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Avro
Proto
Depois de criar um esquema, pode ver os detalhes do esquema na página Esquemas.
Pode associar o esquema a um tópico.