Dans Pub/Sub, un sujet est une ressource nommée qui représente un flux de messages. Avant de pouvoir publier un sujet ou de vous y abonner, vous devez le créer. Pub/Sub est compatible avec deux types de sujets : un sujet standard et un sujet d'importation.
Ce document explique comment créer un sujet standard Pub/Sub. Pour en savoir plus sur les sujets d'importation et sur la manière d'en créer un, consultez À propos des sujets d'importation.
Pour créer un sujet, vous pouvez utiliser la Google Cloud console, 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.
Découvrez le processus de publication.
Rôles et autorisations requis
Pour obtenir les autorisations nécessaires pour créer un sujet, 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 sujet. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer un sujet :
-
Accordez cette autorisation pour créer un sujet dans le projet :
pubsub.topics.create
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Vous pouvez configurer le contrôle des accès au niveau du projet et au niveau de ressources individuelles. Vous pouvez créer un abonnement dans un projet et l'associer à un sujet situé dans un autre projet. Assurez-vous de disposer des autorisations requises pour chaque projet.
Propriétés d'un sujet
Lorsque vous créez ou mettez à jour un sujet, vous devez spécifier ses propriétés.
Ajouter un abonnement par défaut
Ajoute un abonnement par défaut au sujet Pub/Sub. Vous pouvez créer un autre abonnement pour le sujet après sa création. L'abonnement par défaut possède les propriétés suivantes :
- ID d'abonnement
-sub - Type de distribution : pull
- Durée de conservation des messages : sept jours
- Expiration après 31 jours d'inactivité
- Délai d'accusé de réception : 10 secondes
- Stratégie de nouvelle tentative : immédiate
Utiliser un schéma
Un schéma est un format que le champ de données du message doit respecter. Un schéma est un contrat entre l'éditeur et l'abonné que Pub/Sub applique. Les schémas de sujet permettent de standardiser les types de messages et les autorisations afin qu'ils puissent être utilisés par différentes équipes de votre organisation. Pub/Sub crée une autorité centrale pour les types de messages et les autorisations. Pour créer un sujet avec un schéma, consultez Présentation des schémas.
Activer l'ingestion
L'activation de cette propriété vous permet d'ingérer des données de streaming provenant de sources externes dans un sujet afin de pouvoir utiliser les fonctionnalités de Google Cloud. Pour créer un sujet d'importation pour l'ingestion, consultez les sections suivantes :
Activer la conservation des messages par sujet
Par défaut, un sujet Pub/Sub ignore les messages dès qu'ils sont confirmés par tous les abonnements associés au sujet. Vous pouvez également configurer un sujet pour qu'il conserve les messages pendant une période maximale de 31 jours, avec une durée de conservation minimale de 10 minutes.
La conservation des messages permet aux abonnements de relire les messages précédemment confirmés ou les messages publiés avant la création de l'abonnement. Pour en savoir plus, consultez la section Relire et supprimer définitivement des messages avec la recherche.
Les coûts de stockage des messages conservés par le sujet sont facturés au projet du sujet. Une fois la période de conservation des messages écoulée, Pub/Sub peut supprimer le message, quel que soit son état de confirmation.
Pour afficher les métriques concernant les messages conservés, utilisez les métriques Cloud Monitoring suivantes :
topic/num_retained_messages: nombre de messages conservéstopic/oldest_retained_message_age: âge du message conservé le plus ancientopic/retained_bytes: taille totale des messages conservés, en octets
Exporter les données des messages vers BigQuery
L'activation de cette propriété vous permet de créer un abonnement BigQuery qui écrit les messages dans une table BigQuery existante à mesure qu'ils sont reçus. Vous n'avez pas besoin de configurer un client abonné distinct. Pour en savoir plus sur les abonnements BigQuery, consultez Abonnements BigQuery.
Sauvegarder les données de message dans Cloud Storage
L'activation de cette propriété vous permet de créer un abonnement Cloud Storage qui écrit les messages dans une table Cloud Storage existante à mesure qu'ils sont reçus. Vous n'avez pas besoin de configurer un client abonné distinct. Pour en savoir plus sur les abonnements Cloud Storage, consultez Abonnements Cloud Storage.
Transformations
Les transformations de message unique par sujet 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 publiés dans le sujet.
Pour en savoir plus sur les transformations de message unique, consultez Présentation des transformations de message unique.
Google-owned and Google-managed encryption key
Indique que le sujet est chiffré à l'aide de Google-owned and Google-managed encryption keys. Par défaut, Pub/Sub chiffre les messages avec Google-owned and Google-managed encryption keys . Par conséquent, le choix de cette option conserve le comportement par défaut. Google gère et alterne automatiquement les clés, ce qui garantit que vos messages sont toujours protégés par le chiffrement le plus puissant disponible. Cette option ne nécessite aucune configuration supplémentaire. Pour en savoir plus sur Google-owned and Google-managed encryption keys, consultez Chiffrement par défaut avec Google-owned and Google-managed encryption keys.
Clé Cloud KMS
Indique si le sujet est chiffré avec une clé de chiffrement gérée par le client (CMEK). Par défaut, Pub/Sub chiffre les messages avec Google-owned and Google-managed encryption keys . Si vous spécifiez cette option, Pub/Sub utilise le modèle de chiffrement encapsulé avec CMEK. Dans cette approche, Cloud KMS ne chiffre pas les messages. Au lieu de cela, Cloud KMS chiffre les clés de chiffrement des données (DEK) que Pub/Sub crée pour chaque sujet. Pub/Sub chiffre les messages à l'aide de la DEK la plus récente ayant été générée pour le sujet. Pub/Sub déchiffre les messages peu de temps avant qu'ils ne soient distribués aux abonnés. Pour en savoir plus sur la création d'une clé, consultez Configurer le chiffrement des messages.
Créer un sujet
Créez un sujet avant de pouvoir y publier des messages ou de vous y abonner.
Console
Pour créer un sujet :
Dans la Google Cloud console, accédez à la page Créer un sujet de Pub/Sub.
Dans le champ ID du sujet, saisissez un ID pour votre sujet. Pour en savoir plus sur la dénomination des sujets, consultez les consignes de dénomination.
Pour créer un abonnement par défaut pour le sujet, sélectionnez Ajouter un abonnement par défaut. Cette option est activée par défaut.
Facultatif. Pour utiliser un schéma avec le sujet, cliquez sur Utiliser un schéma , puis fournissez le schéma. Pour en savoir plus, consultez Créer et associer un schéma lors de la création d'un sujet.
Pour un sujet standard, laissez Activer l'ingestion désélectionné.
Facultatif. Pour conserver les messages après leur publication, sélectionnez Activer la conservation des messages. Sélectionnez la période de conservation en jours, heures et minutes. Pour en savoir plus, consultez Activer la conservation des messages.
Facultatif. Pour exporter les messages publiés vers une table BigQuery, sélectionnez Exporter des données vers BigQuery , puis saisissez les détails de la table. Pour en savoir plus, consultez Créer des abonnements BigQuery.
Facultatif. Pour sauvegarder les messages publiés dans un bucket Cloud Storage, sélectionnez Sauvegarder les données de message dans Cloud Storage , puis saisissez les détails du bucket Cloud Storage. Pour en savoir plus, consultez Créer des abonnements Cloud Storage.
Facultatif. Sous Transformations, ajoutez une ou plusieurs transformations de message unique (SMTs) pour manipuler et filtrer les données des messages. Pour en savoir plus, consultez Créer un sujet avec des transformations de message unique.
Facultatif. Pour utiliser une clé de chiffrement gérée par le client (CMEK) afin de chiffrer les messages, sélectionnez Clé Cloud KMS. Par défaut, Pub/Sub utilise le chiffrement par défaut de Google, qui ne nécessite pas de CMEK. Pour en savoir plus, consultez Configurer le chiffrement des messages.
Facultatif. Pour gérer les clés associées au sujet, cliquez sur Gérer les clés. Pour en savoir plus, consultez Présentation des tags.
Cliquez sur Créer un sujet.
gcloud
-
Dans la Google Cloud console, activez Cloud Shell.
En bas de la Google Cloud console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement 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.
Pour créer un sujet, exécutez la
gcloud pubsub topics createcommande :gcloud pubsub topics create TOPIC_ID
REST
Pour créer un sujet, utilisez la
projects.topics.create
méthode :
La demande doit être authentifiée à l'aide d'un jeton d'accès dans l'en-tête Authorization. Pour obtenir un jeton d'accès pour les identifiants par défaut actuels de l'application, exécutez la commande suivante :
gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer ACCESS_TOKEN
Où :
- PROJECT_ID est l'ID de votre projet.
- TOPIC_ID est l'ID de votre sujet.
Réponse :
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID"
}
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 pour C++ .
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#.
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.
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 de l'API Pub/Sub pour Java .
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 de l'API Pub/Sub pour Node.js.
Node.ts
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 de l'API Pub/Sub pour Node.js.
PHP
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage PHP 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 PHP.
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.
Ruby
L'exemple suivant utilise la bibliothèque cliente Ruby Pub/Sub v3. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby 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 Ruby.
Contraintes liées aux règles d'administration
Les règles d'administration peuvent limiter la création de sujets. Par exemple, une règle peut limiter le stockage des messages dans une région Compute Engine. Pour éviter les erreurs de création de sujets, examinez et mettez à jour les règles d'administration, si nécessaire, avant de créer un sujet.
Si votre projet a été créé récemment, attendez quelques minutes que la règle d'administration s'initialise avant de créer un sujet.
Accéder à la page Règles d'administration
Pour en savoir plus, consultez Configurer des règles de stockage des messages.
Étape suivante
Choisissez le type d'abonnement pour votre sujet.
Découvrez comment publier un message dans un sujet.
Résolvez les problèmes liés à un sujet.
Créez ou modifiez un sujet avec la gcloud CLI, les API REST, ou les bibliothèques clientes.