Ce document explique comment créer un abonnement Pub/Sub avec des transformations de message unique (SMT).
Les transformations de message unique d'abonnement permettent de modifier légèrement les données et les attributs des messages directement dans Pub/Sub. Cette fonctionnalité permet de nettoyer, de filtrer ou de convertir le format des données avant que les messages ne soient distribués à un client abonné.
Pour créer un abonnement avec des SMT, vous pouvez utiliser la console Google Cloud , la Google Cloud CLI, la bibliothèque cliente ou l'API Pub/Sub.
Avant de commencer
Découvrez le service Pub/Sub et sa terminologie.
En savoir plus sur les SMT
Rôles et autorisations nécessaires
Pour obtenir les autorisations nécessaires pour créer un abonnement avec des SMT, 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 Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour créer un abonnement avec des SMT. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer un abonnement avec des SMT :
-
Accordez l'autorisation de créer un abonnement sur le projet :
pubsub.subscriptions.create
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Selon le type d'abonnement, vous aurez peut-être besoin d'autorisations supplémentaires. Pour connaître la liste exacte des autorisations, consultez le document qui explique comment créer l'abonnement spécifique. Par exemple, si vous créez un abonnement BigQuery avec des SMT, consultez Créer des abonnements BigQuery.
Si vous créez un abonnement dans un projet différent de celui du sujet, vous devez accorder le rôle roles/pubsub.subscriber au principal du projet contenant l'abonnement dans le projet contenant le sujet.
Vous pouvez configurer le contrôle des accès au niveau du projet et au niveau de chaque ressource.
Créer un abonnement avec des SMT
Avant de créer un abonnement avec des SMT, consultez la documentation sur les propriétés d'un abonnement.
Pour créer un abonnement Pub/Sub avec un ou plusieurs SMT, procédez comme suit. Vous pouvez activer jusqu'à cinq SMT par abonnement.
Console
Dans la console Google Cloud , accédez à la page Abonnements Pub/Sub.
Cliquez sur Créer un abonnement.
Dans le champ ID d'abonnement, saisissez un ID pour votre abonnement. Pour en savoir plus sur la dénomination des abonnements, consultez les consignes de dénomination.
Sous Transformations, cliquez sur Ajouter une transformation.
Sélectionnez le type de transformation. Pour en savoir plus sur les types de SMT compatibles, consultez Types de SMT.
Définissez les propriétés de configuration du SMT. L'ensemble de propriétés dépend du type de SMT. Pour en savoir plus, consultez la documentation sur ce type de SMT.
Facultatif. Pour valider le SMT, cliquez sur Valider. Si le SMT est valide, le message
"Validation passed"s'affiche. Sinon, un message d'erreur s'affiche.Pour ajouter une autre transformation, cliquez sur Ajouter une transformation et répétez les étapes précédentes.
Pour organiser les SMT dans un ordre spécifique, cliquez sur Déplacer vers le haut ou Déplacer vers le bas. Pour supprimer un SMT, cliquez sur Supprimer.
Facultatif. Pour tester un SMT sur un exemple de message, procédez comme suit :
Cliquez sur Tester les transformations.
Dans la fenêtre Tester la transformation, sélectionnez la fonction que vous souhaitez tester.
Dans la fenêtre Message d'entrée, saisissez un exemple de message.
Pour ajouter un attribut au message, cliquez sur Ajouter un attribut, puis saisissez la clé et la valeur de l'attribut. Vous pouvez ajouter plusieurs attributs.
Cliquez sur Test. Le résultat de l'application de la SMT au message s'affiche sous Message de sortie.
Pour fermer la fenêtre Tester les transformations, cliquez sur Fermer.
Si vous créez plusieurs SMT, vous pouvez tester l'ensemble de la séquence de transformations comme suit :
- Testez le premier SMT de la séquence, comme décrit dans les étapes précédentes.
- Sélectionnez le prochain SMT. Le message d'entrée est prérempli avec le message de sortie du test précédent.
- Continuez à tester les SMT dans l'ordre pour vous assurer que toute la séquence fonctionne comme prévu.
Cliquez sur Créer pour créer l'abonnement.
gcloud
-
Dans la console Google Cloud , activez Cloud Shell.
En bas de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement de shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
Créez un fichier YAML ou JSON qui définit un ou plusieurs SMT. La définition YAML ou JSON dépend du type de SMT. Pour en savoir plus, consultez Types de SMT.
Si le fichier inclut plusieurs SMT, Pub/Sub les exécute dans l'ordre indiqué.
Facultatif. Pour valider un SMT, exécutez la commande
gcloud pubsub message-transforms validate:gcloud pubsub message-transforms validate \ --message-transform-file=TRANSFORM_FILERemplacez les éléments suivants :
- TRANSFORM_FILE : chemin d'accès à un fichier YAML ou JSON qui définit un seul SMT. Si vous créez plusieurs SMT, vous devez les valider individuellement.
Facultatif. Pour tester une ou plusieurs SMT sur un exemple de message Pub/Sub, exécutez la commande
gcloud pubsub message-transforms test:gcloud pubsub message-transforms test \ --message-transforms-file=TRANSFORMS_FILE \ --message=MESSAGE \ --attribute=ATTRIBUTESRemplacez les éléments suivants :
- TRANSFORMS_FILE : chemin d'accès à un fichier YAML ou JSON qui définit un ou plusieurs SMT.
- MESSAGE : corps du message exemple.
- ATTRIBUTES : facultatif. Liste d'attributs de message séparés par une virgule. Chaque attribut est une paire clé/valeur au format
KEY="VALUE".
La commande exécute les SMT dans l'ordre, en utilisant la sortie de chaque SMT comme entrée pour le suivant. La commande affiche les résultats de chaque étape.
Pour créer l'abonnement, exécutez la commande
gcloud pubsub subscriptions create:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=projects/PROJECT_ID/topics/TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILERemplacez les éléments suivants :
SUBSCRIPTION_ID : ID ou nom de l'abonnement que vous souhaitez créer. Pour savoir comment nommer un abonnement, consultez Noms de ressources. Le nom d'un abonnement est immuable.
PROJECT_ID : ID du projet contenant le thème.
TOPIC_ID : ID du thème auquel s'abonner.
TRANSFORMS_FILE : chemin d'accès au fichier YAML ou JSON qui définit un ou plusieurs SMT.
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 de l'API Pub/Sub en langage C#.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java se trouvant 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 Java Pub/Sub.
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 de l'API Pub/Sub en langage Python.
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 obtenir la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage Go.
Interaction des SMT avec d'autres fonctionnalités d'abonnement
Tenez compte des points suivants lorsque vous utilisez un SMT par abonnement.
Filtrage
Si votre abonnement utilise à la fois des SMT et les filtres intégrés de Pub/Sub, le filtre est appliqué avant le SMT. Cela a les implications suivantes :
- Si votre SMT modifie les attributs du message, le filtre Pub/Sub n'est pas appliqué au nouvel ensemble d'attributs.
- Votre SMT n'est pas appliqué aux messages filtrés par le filtre Pub/Sub.
- Si votre SMT filtre les messages, tenez compte de l'impact sur la surveillance de votre backlog d'abonnements.
- Si vous connectez un abonnement à un pipeline Dataflow, n'utilisez pas de SMT d'abonnement pour filtrer les messages, car cela perturbe l'autoscaling de Dataflow.
Tri des messages
Si vous définissez un SMT sur un abonnement pour lequel le tri est activé et que l'exécution du SMT génère une erreur, les messages suivants pour la même clé de tri ne sont pas remis à l'abonné. Pour éviter ce problème, configurez un sujet de lettres mortes sur l'abonnement afin de supprimer le message non traité du backlog de messages.