Ce document vous explique comment valider une révision de schéma pour les sujets Pub/Sub.
Avant de commencer
- Comprendre le fonctionnement des schémas Pub/Sub.
- Créer 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) dans votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
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
Vous devez disposer des autorisations suivantes pour valider une révision de schéma et gérer des schémas :
-
Créer un schéma :
pubsub.schemas.create -
Associer un schéma à un sujet :
pubsub.schemas.attach -
Valider une révision de schéma :
pubsub.schemas.commit -
Supprimer un schéma ou une révision de schéma :
pubsub.schemas.delete -
Obtenir un schéma ou des révisions de schéma :
pubsub.schemas.get -
Lister les schémas :
pubsub.schemas.list -
Lister les révisions de schéma :
pubsub.schemas.listRevisions -
Restaurer un schéma :
pubsub.schemas.rollback -
Valider un message :
pubsub.schemas.validate -
Obtenir la stratégie IAM pour un schéma :
pubsub.schemas.getIamPolicy -
Configurer 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 accorder des rôles et des autorisations à des principaux tels que des utilisateurs, des groupes, des domaines ou des comptes de service. Vous pouvez créer un schéma dans un projet et l'associer à un sujet situé dans un autre projet. Assurez-vous de disposer des autorisations requises pour chaque projet.
Réviser un schéma
Vous pouvez valider une révision de schéma à l'aide de la Cloud de Confiance console, de gcloud CLI, de l'API Pub/Sub, ou des bibliothèques clientes Cloud.
Voici quelques consignes à suivre pour valider une révision de schéma :
Vous pouvez réviser un schéma dans certaines limites :
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 de champ existant.
Pour les schémas Avro, consultez la documentation Avro pour connaître les règles de résolution des schémas. Une nouvelle révision doit suivre les règles comme s'il s'agissait à la fois du schéma du lecteur et du schéma de l'auteur.
Un schéma peut comporter au maximum 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 ID de révision 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 la validation des sujets, l'application des modifications peut prendre quelques minutes.
Console
Pour créer une révision de schéma, procédez comme suit :
Dans la Cloud de Confiance console, accédez à la page Schémas Pub/Sub.
Cliquez sur l'ID de schéma d'un schéma existant.
La page Détails 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.
Par exemple, pour l'exemple de schéma Avro que vous avez créé dans Créer un schéma, vous pouvez ajouter un champ facultatif supplémentaire appelé
Pricecomme 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 du schéma est correcte.
Vous pouvez également valider les messages du schéma.
Cliquez sur Tester le message pour tester un exemple de message.
Dans la fenêtre Tester le message, sélectionnez un type d'encodage de message.
Dans le corps du message, saisissez un message test.
Voici un exemple de message pour le schéma test. Dans cet exemple, sélectionnez l'encodage de message
JSON.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}Cliquez sur Test.
Cliquez sur Valider pour enregistrer le schéma.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Où :
- SCHEMA_TYPE correspond à
avroouprotocol-buffer. - SCHEMA_DEFINITION correspond à un
stringcontenant la définition de le schéma, formatée en fonction du type de schéma choisi.
Vous pouvez également spécifier la définition du schéma dans un fichier :
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Où :
- SCHEMA_TYPE correspond à
avroouprotocol-buffer. - SCHEMA_DEFINITION_FILE correspond à un
stringcontenant le chemin d'accès au fichier avec la définition du schéma, formatée en fonction du type de schéma choisi.
REST
Pour valider une révision de schéma, envoyez une requête POST comme suit :
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 à
AVROouPROTOCOL_BUFFER. - SCHEMA_DEFINITION est une chaîne contenant la définition de le 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 correspond à l'ID généré par le serveur pour la révision.
- REVISION_CREATE_TIME correspond au code temporel ISO 8601 auquel la révision a été créée.
Go
L'exemple suivant utilise la version majeure de la bibliothèque cliente Go Pub/Sub (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
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 de 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
Une fois que vous avez validé une révision de schéma, vous pouvez afficher les détails de la nouvelle révision sur la page Schémas.