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, filtrer ou 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 requis
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 la page 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 obtenir 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 la page 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.
Les exemples suivants supposent que vous souhaitez créer un abonnement avec cette UDF SMT. Pour en savoir plus sur les fonctions définies par l'utilisateur, consultez la présentation des fonctions définies par l'utilisateur.
function redactSSN(message, metadata) {
const data = JSON.parse(message.data);
delete data['ssn'];
message.data = JSON.stringify(data);
return message;
}
Console
Dans la console Google Cloud , accédez à la page Abonnements Pub/Sub.
-
Cliquez sur Créer un abonnement.
La page Créer un abonnement s'ouvre.
-
Dans le champ ID d'abonnement, saisissez un ID pour votre abonnement. Pour en savoir plus sur l'attribution de noms aux abonnements, consultez les consignes d'attribution de noms.
-
Sous Transformations, cliquez sur Ajouter une transformation.
-
Saisissez un nom de fonction. Exemple :
redactSSN
. -
Si vous ne souhaitez pas utiliser immédiatement le SMT avec votre abonnement, cliquez sur l'option Désactiver la transformation. Le SMT sera toujours enregistré, mais il ne sera pas exécuté lorsque les messages transiteront par votre abonnement.
-
Saisissez une nouvelle transformation. Exemple :
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }
-
Pub/Sub fournit une fonction de validation qui vous permet de valider une transformation de message unique. Cliquez sur Valider pour valider la transformation.
-
Si vous souhaitez ajouter une autre transformation, cliquez sur Ajouter une transformation.
- Pour organiser tous les SMT dans un ordre spécifique, vous pouvez utiliser les flèches vers le haut et vers le bas. Pour supprimer un SMT, cliquez sur le bouton Supprimer.
-
Pub/Sub fournit une fonction de test qui vous permet de vérifier le résultat de l'exécution du SMT sur un exemple de message. Pour tester les SMT, cliquez sur Tester la transformation.
-
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.
-
Si vous souhaitez ajouter des attributs de message, cliquez sur Ajouter un attribut, puis saisissez une ou plusieurs paires clé/valeur.
-
Cliquez sur Test. Le résultat de l'application des SMT au message s'affiche.
-
Fermez la fenêtre pour arrêter de tester les SMT sur des exemples de messages.
-
Cliquez sur Créer pour créer l'abonnement.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Pub/Sub fournit une fonction de validation qui vous permet de valider un SMT. Exécutez la commande
gcloud pubsub message-transforms validate
:gcloud pubsub message-transforms validate --message-transform-file=TRANSFORM_FILE
Remplacez les éléments suivants :
-
TRANSFORM_FILE : chemin d'accès au fichier YAML ou JSON contenant un seul SMT.
Voici un exemple de fichier de transformation YAML :
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
Pub/Sub fournit une fonction de test qui vous permet de vérifier le résultat de l'exécution d'un ou de plusieurs SMT sur un exemple de message. Exécutez la commande
gcloud pubsub message-transforms test
:gcloud pubsub message-transforms test --message-transforms-file=TRANSFORMS_FILE --message=MESSAGE --attributes=ATTRIBUTES
Remplacez les éléments suivants :
-
TRANSFORMS_FILE : chemin d'accès au fichier YAML ou JSON contenant un ou plusieurs SMT.
Voici un exemple de fichier de transformations YAML :
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
MESSAGE : corps du message avec lequel tester les SMT.
-
ATTRIBUTES : attributs de message avec lesquels tester le ou les SMT.
-
-
Pour créer l'abonnement, exécutez la commande
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_NAME \ --message-transforms-file=TRANSFORMS_FILE
Remplacez l'élément suivant :
-
SUBSCRIPTION_ID : ID ou nom de l'abonnement que vous souhaitez créer. Pour obtenir des consignes sur la façon de nommer un abonnement, consultez Noms de ressources. Le nom d'un abonnement est immuable.
-
TOPIC_NAME : nom du thème auquel s'abonner, au format
projects/PROJECT_ID/topics/TOPIC_ID
. -
TRANSFORMS_FILE : chemin d'accès au fichier YAML ou JSON contenant un ou plusieurs SMT.
Voici un exemple de fichier de transformations YAML :
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de Pub/Sub : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de Pub/Sub : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de Pub/Sub : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Interaction des SMT avec d'autres fonctionnalités d'abonnement
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 ne s'applique pas au nouvel ensemble d'attributs.
- Votre SMT ne sera appliqué à aucun message filtré par le filtre Pub/Sub.
Si votre SMT filtre les messages, sachez que cela aura un impact sur la surveillance de votre backlog d'abonnements. Si vous transmettez l'abonnement à un pipeline Dataflow, ne filtrez pas les messages à l'aide du SMT, car cela perturbe l'autoscaling de Dataflow.