Découvrez les étapes de dépannage qui pourraient vous être utiles si vous rencontrez des problèmes avec Pub/Sub.
Impossible de créer un sujet
Vérifiez que vous disposez des autorisations nécessaires.
Pour créer un sujet Pub/Sub, vous devez disposer du rôle Éditeur Pub/Sub (roles/pubsub.editor
) Identity and Access Management au projet. Si vous ne disposez pas de ce rôle, contactez votre administrateur.
Pour obtenir des informations de dépannage supplémentaires sur ces sujets, consultez les pages suivantes:
Impossible de créer un abonnement
Assurez-vous d'avoir effectué les opérations suivantes:
Vérifiez que vous disposez des autorisations nécessaires. Pour créer un abonnement Pub/Sub, vous devez disposer du rôle IAM Éditeur Pub/Sub (roles/pubsub.editor) sur le projet. Si vous ne disposez pas de ce rôle, contactez votre administrateur.
Vous avez indiqué un nom pour l'abonnement.
Vous avez spécifié le nom d'un sujet existant auquel vous souhaitez associer l'abonnement.
Si vous créez un abonnement push, vous avez spécifié
https://
en minuscule (et nonhttp://
ouHTTPS://
) en tant que protocole pour votre URL de réception dans le champpushEndpoint
.
Pour obtenir des informations de dépannage supplémentaires sur les abonnements, consultez les pages suivantes:
Résoudre les problèmes d'autorisation
Les autorisations Pub/Sub contrôlent les utilisateurs et les comptes de service autorisés à effectuer des actions sur vos ressources Pub/Sub. Lorsque les autorisations sont mal configurées, cela peut entraîner des erreurs d'autorisation refusée et perturber le flux de messages. Les journaux d'audit fournissent un enregistrement détaillé de toutes les modifications d'autorisations, ce qui vous permet d'identifier la source de ces problèmes.
Pour résoudre les problèmes d'autorisation Pub/Sub avec les journaux d'audit:
Obtenez les autorisations requises pour afficher l'explorateur de journaux.
Pour plus d'informations, consultez la section Avant de commencer.
Dans la console Google Cloud , accédez à la page Explorateur de journaux.
Sélectionnez un projet, un dossier ou une organisation Google Cloud existant.
Voici une liste de filtres que vous pouvez utiliser pour trouver les journaux pertinents:
resource.type="pubsub_topic" OR resource.type="pubsub_subscription"
: utilisez cette requête comme point de départ lorsque vous résolvez un problème pouvant impliquer des modifications de la configuration d'un sujet ou d'un abonnement, ou du contrôle des accès. Vous pouvez le combiner à d'autres filtres pour affiner davantage votre recherche.protoPayload.methodName="google.iam.v1.SetIamPolicy"
: utilisez cette requête lorsque vous pensez qu'un problème est causé par des autorisations incorrectes ou manquantes. Il vous aide à identifier qui a modifié la stratégie IAM et quelles étaient ces modifications. Cela peut être utile pour résoudre des problèmes tels que des utilisateurs qui ne peuvent pas publier de sujets ni s'abonner à des abonnements, des applications auxquelles l'accès aux ressources Pub/Sub est refusé ou des modifications inattendues du contrôle des accès.protoPayload.status.code=7
: utilisez cette requête lorsque vous rencontrez des erreurs explicitement liées aux autorisations. Cela vous permet d'identifier les actions qui échouent et les utilisateurs qui les effectuent. Vous pouvez combiner cette requête avec les précédentes pour identifier la ressource spécifique et la modification de la stratégie IAM pouvant entraîner le refus d'autorisation.
Analysez les journaux pour déterminer des facteurs tels que le code temporel de l'événement, l'entité principale à l'origine de la modification et le type de modifications apportées.
Sur la base des informations recueillies dans les journaux d'audit, vous pouvez prendre des mesures correctives.
Abonnement supprimé
Les abonnements Pub/Sub peuvent être supprimés de deux manières principales:
Un utilisateur ou un compte de service disposant d'autorisations suffisantes supprime intentionnellement l'abonnement.
Un abonnement est automatiquement supprimé après une période d'inactivité, qui est de 31 jours par défaut. Pour en savoir plus sur le règlement sur l'expiration des abonnements, consultez la section Durée d'expiration.
Pour résoudre les problèmes liés à un abonnement supprimé, procédez comme suit:
Dans la console Google Cloud , accédez à la page "Abonnements Pub/Sub" et vérifiez que l'abonnement n'est plus listé. Pour savoir comment lister des abonnements, consultez Lister un abonnement.
Consultez les journaux d'audit. Accédez à l'explorateur de journaux. Utilisez le filtre
protoPayload.methodName="google.pubsub.v1.Subscriber.DeleteSubscription"
pour rechercher les abonnements supprimés. Examinez les journaux pour déterminer si quelqu'un a supprimé l'abonnement ou s'il a été supprimé en raison d'une inactivité.InternalExpireInactiveSubscription
indique qu'un abonnement a été supprimé pour cause d'inactivité. Pour en savoir plus sur l'utilisation des journaux d'audit pour le dépannage, consultez la section Résoudre les problèmes Pub/Sub à l'aide des journaux d'audit.
403 (Forbidden)
erreur
Si vous rencontrez cette erreur, procédez comme suit :
- Assurez-vous d'avoir activé l'API Pub/Sub dans la consoleGoogle Cloud .
Vérifiez que le principal à l'origine de la requête dispose des autorisations requises sur les ressources de l'API Pub/Sub correspondantes, en particulier si vous vous servez de cette API pour communiquer entre plusieurs projets.
Si vous utilisez Dataflow, assurez-vous que
{PROJECT_NUMBER}@cloudservices.gserviceaccount.com
et le compte de service Compute Engine{PROJECT_NUMBER}-compute@developer.gserviceaccount.com
disposent des autorisations requises sur la ressource de l'API Pub/Sub appropriée. Pour en savoir plus, consultez la section Sécurité et autorisations pour Dataflow.Si vous utilisez App Engine, consultez la page des autorisations de votre projet pour savoir si un compte de service App Engine est répertorié en tant qu'éditeur Pub/Sub. Si ce n'est pas le cas, ajoutez votre compte de service App Engine en tant qu'éditeur Pub/Sub. Normalement, le compte de service App Engine est au format suivant :
<project-id>@appspot.gserviceaccount.com
.
Autres codes d'erreur courants
Pour obtenir la liste d'autres codes d'erreur courants liés à l'API Pub/Sub et leur description, consultez la section Codes d'erreur.
Utiliser des opérations d'administration excessives
Si vous constatez que vous utilisez une trop grande partie de votre quota pour des opérations d'administration, vous devrez peut-être refactoriser votre code. À titre d'illustration, intéressons-nous à ce pseudo-code. Ici, une opération d'administration (GET
) est utilisée pour vérifier la présence d'un abonnement avant toute tentative d'utilisation de ses ressources. GET
et CREATE
sont des opérations d'administration:
if !GetSubscription my-sub {
CreateSubscription my-sub
}
Consume from subscription my-sub
Un modèle plus efficace consiste à essayer de consulter des messages de l'abonnement (en supposant que vous soyez suffisamment sûr du nom de l'abonnement). Dans cette approche optimiste, vous n'accédez à l'abonnement ou ne le créez qu'en cas d'erreur. Considérez l'exemple suivant :
try {
Consume from subscription my-sub
} catch NotFoundError {
CreateSubscription my-sub
Consume from subscription my-sub
}
Vous pouvez utiliser les exemples de code suivants pour implémenter ce modèle dans la langue de votre choix:
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 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.
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 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.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js 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 Node.js.
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 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.
C++
Avant d'essayer cet exemple, suivez les instructions de configuration pour C++ 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 C++.
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.
Node.js (TypeScript)
Avant d'essayer cet exemple, suivez les instructions de configuration de Node.js décrites dans le guide de démarrage rapide de Pub/Sub : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
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.