Ce document explique comment créer un abonnement push. Vous pouvez utiliser la console Google Cloud, la Google Cloud CLI, la bibliothèque cliente ou l'API Pub/Sub pour créer un abonnement push.
Avant de commencer
- En savoir plus sur les abonnements
- Comprendre le fonctionnement des abonnements push
Rôles et autorisations requis
Pour créer un abonnement, vous devez configurer le contrôle des accès au niveau du projet. Vous avez également besoin d'autorisations au niveau des ressources si vos abonnements et vos sujets se trouvent dans différents projets, comme indiqué plus loin dans cette section.
Pour obtenir les autorisations nécessaires pour créer des abonnements push, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Pub/Sub (roles/pubsub.editor
) sur le 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 des abonnements push. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer des abonnements push:
-
Créez un abonnement :
pubsub.subscriptions.create
-
Supprimer un abonnement :
pubsub.subscriptions.delete
-
Obtenir un abonnement :
pubsub.subscriptions.get
-
Lister un abonnement :
pubsub.subscriptions.list
-
Modifier un abonnement :
pubsub.subscriptions.update
-
Joindre un abonnement à un sujet :
pubsub.topics.attachSubscription
-
Obtenez la stratégie IAM d'un abonnement :
pubsub.subscriptions.getIamPolicy
-
Configurez la stratégie IAM pour un abonnement :
pubsub.subscriptions.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Si vous devez créer des abonnements push dans un projet associés à un sujet dans un autre projet, demandez à l'administrateur du sujet de vous accorder également le rôle IAM (roles/pubsub.editor)
Éditeur Pub/Sub sur le sujet.
Propriétés des abonnements push
Lorsque vous configurez un abonnement push, vous pouvez spécifier les propriétés suivantes.
Propriétés communes
Découvrez les propriétés d'abonnement courantes que vous pouvez définir pour tous les abonnements.
Points de terminaison
URL du point de terminaison (obligatoire) Une adresse HTTPS accessible au public. Le serveur associé au point de terminaison push doit disposer d'un certificat SSL valide signé par une autorité de certification. Le service Pub/Sub envoie les messages aux points de terminaison push situés dans la région Google Cloud où le service stocke les messages. Le service Pub/Sub distribue les messages provenant de la même région Google Cloud de la manière la plus optimale possible.
Pub/Sub ne nécessite plus la preuve que vous êtes propriétaire pour les domaines d'URL d'un abonnement push. Si votre domaine reçoit des requêtes POST inattendues de la part de Pub/Sub, vous pouvez signaler un abus présumé.
Authentification
Activez l'authentification. Lorsqu'elles sont activées, les messages envoyés par Pub/Sub au point de terminaison push incluent un en-tête d'autorisation permettant au point de terminaison d'authentifier la requête. Les mécanismes d'authentification et d'autorisation automatiques sont disponibles pour les points de terminaison de l'environnement standard App Engine et de Cloud Run Functions hébergés dans le même projet que l'abonnement.
La configuration d'authentification pour un abonnement push authentifié se compose d'un compte de service géré par l'utilisateur et des paramètres d'audience spécifiés dans un appel create, patch ou ModifyPushConfig. Vous devez également attribuer un rôle spécifique à un agent de service, comme indiqué dans la section suivante.
Compte de service géré par l'utilisateur (obligatoire) Compte de service associé à l'abonnement push. Ce compte est utilisé comme revendication
email
du jeton Web JSON (JWT) généré. Voici la liste des exigences concernant le compte de service:Ce compte de service doit appartenir au même projet que l'abonnement push.
Le principal qui crée ou modifie l'abonnement push doit disposer de l'autorisation
iam.serviceAccounts.actAs
sur le compte de service. Vous pouvez accorder un rôle avec cette autorisation au projet, au dossier ou à l'organisation pour autoriser l'appelant à usurper l'identité de plusieurs comptes de service ou accorder un rôle avec cette autorisation au compte de service pour autoriser l'appelant à usurper l'identité de ce compte de service uniquement.
Audience Chaîne unique, ne respectant pas la casse, utilisée par le webhook pour valider l'audience visée par ce jeton spécifique.
Agent de service (obligatoire).
Pub/Sub crée automatiquement un compte de service au format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Cet agent de service doit disposer de l'autorisation
iam.serviceAccounts.getOpenIdToken
(inclue dans le rôleroles/iam.serviceAccountTokenCreator
) pour permettre à Pub/Sub de créer des jetons JWT pour les requêtes push authentifiées.
Désencapsulation de la charge utile
L'option Enable payload unwrapping (Activer la désencapsulation de la charge utile) supprime toutes les métadonnées des messages Pub/Sub, à l'exception des données de message. Avec le déballage de la charge utile, les données du message sont transmises directement en tant que corps HTTP.
- Écrivez des métadonnées. Ajoute les métadonnées de message précédemment supprimées à l'en-tête de requête.
VPC Service Controls
Pour un projet protégé par VPC Service Controls, tenez compte des limites suivantes pour les abonnements push:
Vous ne pouvez créer que des abonnements push pour lesquels le point de terminaison push est défini sur un service Cloud Run avec une URL
run.app
par défaut ou une exécution Workflows. Les domaines personnalisés ne fonctionnent pas.Lorsque vous acheminez des événements via Eventarc vers des destinations Workflows pour lesquelles le point de terminaison push est défini sur une exécution Workflows, vous ne pouvez créer que des abonnements push via Eventarc.
Vous ne pouvez pas mettre à jour les abonnements push existants. Ces abonnements push continuent de fonctionner, même s'ils ne sont pas protégés par VPC Service Controls.
Créer un abonnement push
Les exemples suivants montrent comment créer un abonnement avec une distribution push, à l'aide des paramètres par défaut fournis.
Par défaut, les abonnements utilisent la distribution pull, sauf si vous définissez explicitement une configuration push, comme illustré dans les exemples suivants.
Console
Pour créer un abonnement push, procédez comme suit:
- Dans la console Google Cloud, accédez à la page Abonnements.
- Cliquez sur Créer un abonnement.
- Dans le champ ID d'abonnement, saisissez un nom.
Pour savoir comment nommer un abonnement, consultez la section Consignes de dénomination d'un sujet ou d'un abonnement.
- Choisissez ou créez un sujet dans le menu déroulant. L'abonnement reçoit les messages du sujet.
- Sélectionnez Push pour le champ Type de diffusion.
- Spécifiez une URL de point de terminaison.
- Conservez toutes les autres valeurs par défaut.
- Cliquez sur Créer.
Vous pouvez également créer un abonnement à partir de la section Sujets. Ce raccourci est utile pour associer des sujets à des abonnements.
- Dans la console Google Cloud, accédez à la page Topics (Sujets).
- Cliquez sur more_vert à côté du sujet pour lequel vous souhaitez créer un abonnement.
- Dans le menu contextuel, sélectionnez Créer un abonnement.
- Saisissez l'ID de l'abonnement.
Pour savoir comment nommer un abonnement, consultez la section Consignes de dénomination d'un sujet ou d'un abonnement.
- Sélectionnez Push pour le champ Type de diffusion.
- Spécifiez une URL de point de terminaison.
- Conservez toutes les autres valeurs par défaut.
- Cliquez sur Créer.
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.
-
Pour créer un abonnement push, exécutez la commande
gcloud pubsub subscriptions create
.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Remplacez les éléments suivants :
SUBSCRIPTION_ID
: nom ou ID de votre nouvel abonnement push.TOPIC_ID
: nom ou ID de votre sujet.- PUSH_ENDPOINT: URL à utiliser comme point de terminaison pour cet abonnement.
Exemple :
https://myproject.appspot.com/myhandler
REST
Pour créer un abonnement push, utilisez la méthode projects.subscriptions.create
:
Requête :
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/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
Corps de la requête :
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", // Only needed if you are using push delivery "pushConfig": { "pushEndpoint": "PUSH_ENDPOINT" } }
Où :
https://myproject.appspot.com/myhandler
Réponse :
{ "name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID", "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "pushConfig": { "pushEndpoint": "https://PROJECT_ID.appspot.com/myhandler", "attributes": { "x-goog-version": "v1" } }, "ackDeadlineSeconds": 10, "messageRetentionDuration": "604800s", "expirationPolicy": { "ttl": "2678400s" } }
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++.
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 la page Configurer l'authentification pour les bibliothèques clientes.
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 la page Configurer l'authentification pour les bibliothèques clientes.
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 la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Node.js
PHP
Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP 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 PHP.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
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 la page Configurer l'authentification pour les bibliothèques clientes.
Ruby
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby 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 Ruby.
Pour vous authentifier auprès de Pub/Sub, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Surveiller les abonnements push
Cloud Monitoring fournit un certain nombre de métriques pour surveiller les abonnements.
Pour obtenir la liste de toutes les métriques disponibles liées à Pub/Sub et leurs descriptions, consultez la documentation de surveillance de Pub/Sub.
Vous pouvez également surveiller les abonnements à partir de Pub/Sub.
Étape suivante
- Créez ou modifiez un abonnement à l'aide des commandes
gcloud
. - Créez ou modifiez un abonnement à l'aide des API REST.