Ce document explique comment valider une révision de schéma pour Sujets Pub/Sub.
Avant de commencer
- Découvrez le fonctionnement des schémas Pub/Sub.
- Créez un schéma.
Rôles et autorisations requis
Pour obtenir les autorisations nécessaires pour valider une révision de schéma et gérer des schémas,
demandez à votre administrateur de vous accorder le
Rôle IAM Éditeur Pub/Sub (roles/pubsub.editor
) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Ce rôle prédéfini contient les autorisations requises pour valider une révision de schéma et gérer des schémas. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour valider une révision de schéma et gérer des schémas:
-
Créez un schéma:
pubsub.schemas.create
-
Associez le schéma au sujet:
pubsub.schemas.attach
-
Effectuez un commit d'une révision du schéma:
pubsub.schemas.commit
-
Supprimez un schéma ou une révision de schéma:
pubsub.schemas.delete
-
Obtenez un schéma ou des révisions de schéma:
pubsub.schemas.get
-
Listez les schémas:
pubsub.schemas.list
-
Répertoriez les révisions de schéma:
pubsub.schemas.listRevisions
-
Effectuez le rollback d'un schéma:
pubsub.schemas.rollback
-
Pour valider un message:
pubsub.schemas.validate
-
Obtenez la stratégie IAM pour un schéma:
pubsub.schemas.getIamPolicy
-
Configurez la stratégie IAM pour un schéma:
pubsub.schemas.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Vous pouvez attribuer des rôles et des autorisations à des comptes principaux des domaines ou des comptes de service. Vous pouvez créer un schéma dans un projet à un sujet situé dans un autre projet. Assurez-vous de disposer des autorisations requises pour chaque projet.
Réviser un schéma
Vous pouvez effectuer un commit d'une révision de schéma à l'aide de la la console Google Cloud, la gcloud CLI CLI, l'API Pub/Sub, ou les bibliothèques clientes Cloud.
Voici quelques consignes pour valider une révision de schéma:
Vous pouvez réviser un schéma en respectant des contraintes spécifiques:
Pour les schémas de tampon de protocole, vous pouvez ajouter ou supprimer des champs facultatifs. Vous ne pouvez pas ajouter ni supprimer d'autres champs. Vous ne pouvez pas non plus modifier champ existant.
Pour les schémas Avro, consultez Documentation Avro pour connaître les règles de résolution de schéma. Toute nouvelle révision doit respecter les règles bien qu'il s'agisse à la fois du schéma du lecteur et du schéma du rédacteur.
Un schéma peut comporter jusqu'à 20 révisions à la fois. Si vous dépassez cette limite, supprimez une révision de schéma avant d'en créer une autre.
Chaque révision est associée à un identifiant unique. L'ID de révision est un UUID à huit caractères généré automatiquement.
Lorsque vous mettez à jour la plage de révisions ou la révision d'un schéma utilisé pour validation du sujet, l'application des modifications peut prendre quelques minutes.
Console
Pour créer une révision de schéma, procédez comme suit:
Dans la console Google Cloud, accédez à la page Schémas Pub/Sub.
Cliquez sur l'ID du schéma d'un schéma existant.
La page Détails du schéma du schéma s'ouvre.
Cliquez sur Créer une révision.
La page Créer une révision de schéma s'ouvre.
Apportez les modifications nécessaires.
Ainsi, pour l'exemple de schéma Avro que vous avez créé dans créer un schéma, vous pouvez ajouter un autre schéma appelé
Price
, comme suit:{ "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" } ] }
Cliquez sur Valider la définition pour vérifier si la définition de schéma est correcte.
Vous pouvez également valider les messages pour le schéma.
Cliquez sur Test message (Tester un message) pour tester un exemple de message.
Dans la fenêtre Message de test, sélectionnez un type d'encodage des messages.
Dans le corps du message, saisissez un message de test.
Voici un exemple de message pour le schéma de test. Dans cet exemple, sélectionnez
JSON
pour l'encodage des messages.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
Cliquez sur Test.
Cliquez sur Commit (Valider) pour enregistrer le schéma.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Où :
- SCHEMA_TYPE correspond à
avro
ouprotocol-buffer
. - SCHEMA_DEFINITION correspond à une chaîne (
string
) contenant la définition du schéma, formatée en fonction du type de schéma choisi.
Vous pouvez également spécifier la définition du schéma dans le fichier:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Où :
- SCHEMA_TYPE correspond à
avro
ouprotocol-buffer
. - SCHEMA_DEFINITION_FILE est un
string
contenant le chemin d'accès contenant la définition du schéma, formaté selon le format choisi type de schéma.
REST
Pour valider une révision de schéma, envoyez une requête POST semblable à celle-ci:
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
Spécifiez les champs suivants dans le corps de la requête :
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE "name": SCHEMA_NAME }
Où :
- SCHEMA_TYPE correspond à
AVRO
ouPROTOCOL_BUFFER
. - SCHEMA_DEFINITION est une chaîne contenant la définition du schéma, formatée en fonction du type de schéma choisi.
- SCHEMA_NAME correspond au nom d'un schéma existant.
Le corps de la réponse doit contenir une représentation JSON d'une ressource de schéma. Exemple :
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
Où :
- REVISION_ID est l'ID de révision généré par le serveur.
- REVISION_CREATE_TIME est le code temporel ISO 8601 correspondant au moment la révision a été créée.
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Avro
Proto
C++
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C++ qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C++.
Avro
Proto
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Avro
Proto
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Avro
Proto
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
Avro
Proto
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
Avro
Proto
Après avoir validé une révision de schéma, vous pouvez afficher les détails du nouveau révision sur la page Schémas.
Étape suivante
- Supprimer une révision de schéma
- Répertorier les révisions d'un schéma
- Effectuer un rollback de la révision du schéma