Configurer les règles de stockage des messages

Si vous publiez des messages sur le point de terminaison mondial Pub/Sub, Pub/Sub les stocke automatiquement dans la région Google Cloud la plus proche. Si vous souhaitez contrôler les régions dans lesquelles vos messages sont stockés et traités, vous pouvez configurer une règle de stockage des messages sur votre sujet.

Présentation des règles de stockage des messages

Vous pouvez définir une stratégie de stockage des messages lorsque vous créez un sujet ou que vous le mettez à jour à l'aide de la console, de la Google Cloud CLI ou des API REST.

La règle de stockage des messages ne s'applique qu'au contenu des messages. La règle ne s'applique pas aux autres données, telles que les noms de sujets, les libellés ou les paramètres IAM (Identity and Access Management).

Pub/Sub stocke les messages lorsqu'un client les publie Pub/Sub. Une règle de stockage des messages garantit que Pub/Sub ne stocke et ne traite les messages que dans l'ensemble de régions Google Cloud que vous spécifiez, quelle que soit l'origine des requêtes de publication ou d'abonnement. Si la règle autorise la publication dans plusieurs régions Pub/Sub stocke le message dans la région autorisée la plus proche à l'endroit où le message publié entre dans le réseau Google Cloud.

Lorsque vous spécifiez une règle de stockage des messages, vous pouvez définir enforceInTransit sur True. Cet indicateur régit les éléments suivants :

  • Les requêtes de publication, d'extraction et de streamingPull reçues dans une région ne sont pas autorisées dans la règle de stockage des messages sont rejetés avec un FAILED_PRECONDITION .

  • Pour les abonnements push, la distribution n'est gérée que dans le cloud autorisé. dans différentes régions. Dans certains cas, cette restriction peut suspendre complètement la distribution des messages pour les abonnements push. Lorsqu'un abonnement push entre dans un car les emplacements de transfert sont trop contraints par la combinaison tels que l'emplacement de stockage des messages, les régions autorisées et l'exportation emplacement de la ressource, cet état devient visible dans Stackdriver.

Règles de stockage des messages pour les nouveaux sujets

  • Si vous ne spécifiez pas de règle de stockage des messages lorsque vous créez un sujet, la règle de stockage des messages est définie automatiquement en fonction de la règle d'administration de Restriction d'emplacement des ressources en vigueur. Lorsqu'aucune règle d'administration n'est appliquée, la règle de stockage des messages autorise toutes les régions.

  • De même, en l'absence d'une règle de stockage des messages définie, L'indicateur enforceInTransit est déterminé en fonction de la valeur effective Appliquez des régions de transit pour les messages Pub/Sub. Pour en savoir plus sur cette règle d'administration, consultez la page Contraintes liées aux règles d'administration.

  • Si vous spécifiez une règle de stockage des messages lors de la création d'un sujet, elle ne peut contenir que les régions autorisées par la règle d'administration Restriction d'emplacement des ressources. Lorsqu'aucune règle d'administration n'est appliquée, la règle de stockage des messages peut contenir n'importe quelle région.

Règles de stockage des messages pour les sujets existants

  • Lorsqu'une règle d'administration est mise à jour, les modifications ne se propagent pas automatiquement aux sujets existants. Par conséquent, la règle de stockage des messages d'un sujet existant peut ne plus être synchronisée avec les dernières règles d'administration. Pour Pour en savoir plus, consultez Gérer les différences entre les règles d'administration et les règles relatives aux thèmes.

  • Lorsque la règle de stockage des messages d'un sujet est mise à jour, les modifications ne sont pas répercutées. aux messages déjà publiés. Les messages déjà stockés en fonction d'une ancienne règle ne sont pas transférés à des fins de cohérence avec la nouvelle règle. À l'inverse, les modifications ne s'appliquent qu'aux messages publiés après la mise à jour.

Exceptions

La règle spécifie une liste des noms de régions Google Cloud autorisés. Par conséquent, les éléments suivants ne sont pas acceptés :

  • Listes d'exclusion
  • Zones ou zones multirégionales

Si vous publiez un message avec une clé de tri et que la règle de stockage des messages exclut la région la plus proche, le service Pub/Sub renvoie une erreur.

Configurer les règles de stockage des messages

Il existe deux façons de configurer les règles de stockage des messages pour les sujets, y compris:

  • Définissez une règle de stockage des messages à l'aide d'une règle d'administration.
  • Configurez une règle de stockage des messages lorsque vous créez un sujet.

Définir une règle de stockage des messages à l'aide d'une règle d'administration

Console

Pour configurer une règle de stockage des messages qui s'applique à plusieurs sujets, définissez une règle d'administration Restriction d'emplacement des ressources.

  1. Accédez à la page Règles d'administration dans la console Identity and Access Management.

    Accéder à la page Règles d'administration

  2. Sélectionnez le nœud de la hiérarchie des ressources (organisation, dossier ou projet) auquel vous souhaitez appliquer une règle d'administration.

  3. Dans le filtre, saisissez Restriction d'emplacement des ressources.

  4. Cliquez sur Google Cloud - Restriction d'emplacement des ressources.

  5. Cliquez sur MODIFIER.

  6. Ajoutez ou supprimez des régions si nécessaire.

    Tous les nouveaux sujets que vous créez héritent de ces paramètres. Les modifications n'ont pas automatiquement aux sujets existants. Pour mettre à jour des sujets existants, vous devez exécuter une opération de mise à jour.

Pour en savoir plus sur les règles d'administration, consultez Gérer vos ressources Google Cloud.

Configurer une règle de stockage des messages lors de la création d'un sujet

Console

Lorsque vous utilisez la console Google Cloud, vous ne pouvez pas configurer de règle de stockage des messages lors de la création d'un sujet. À la place, tous les nouveaux sujets héritent de votre règle d'administration Restriction d'emplacement des ressources.

Toutefois, après avoir créé un sujet, vous pouvez modifier ses règles de stockage des messages dans la console avec une opération de mise à jour.

CLI gcloud

Pour créer un sujet avec une règle de stockage des messages spécifique, utilisez la méthode gcloud pubsub topics create avec l'option --message-storage-policy-allowed-regions:

gcloud pubsub topics create TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1,REGION2

Remplacez les éléments suivants :

  • TOPIC_ID: ID ou nom de votre nouveau sujet.
  • REGION1, REGION2 : liste des régions Google Cloud compatibles, séparées par des virgules.

REST

Pour créer un sujet avec une règle de stockage des messages, utilisez la méthode projects.topics.create .

La requête doit être authentifiée avec un jeton d'accès dans le Authorization en-tête. 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.

 POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
 Authorization: Bearer $(gcloud auth application-default print-access-token)
 Content-Type: application/json --data @response-body.json

Spécifiez les champs suivants dans le corps de la requête :

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"],
    "enforceInTransit": true
  }
}

Où :

  • PROJECT_ID est l'ID de votre projet.

  • TOPIC_ID est l'ID de votre sujet.

  • REGION est la région spécifiée.

Exemple de réponse :

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Consultez les documentations de référence d'API suivantes pour en savoir plus sur la configuration des messages règles de stockage.

Mettre à jour les règles de stockage des messages

Console

  1. Dans la console Google Cloud, ouvrez la page Détails du sujet.

    Accéder aux détails du sujet

  2. Sélectionnez un sujet à mettre à jour.

    Vous pouvez sélectionner plusieurs thèmes.

  3. Dans le panneau d'informations, sélectionnez l'onglet Règles de stockage.

    Il est possible que ce panneau soit réduit par défaut. S'il est réduit, cliquez sur Afficher le panneau d'informations

  4. Sélectionnez ou désélectionnez autant de régions que nécessaire.

  5. Cliquez sur Mettre à jour.

CLI gcloud

Pour appliquer la règle de stockage des messages définie dans la stratégie de restriction d'emplacement des ressources de votre organisation à un sujet, exécutez la commande gcloud pubsub topics update suivante :

gcloud pubsub topics update TOPIC_ID \
    --recompute-message-storage-policy

Pour mettre à jour la règle de stockage des messages d'un sujet avec des régions spécifiques, exécutez la commande la commande gcloud pubsub topics update avec la commande Indicateur --message-storage-policy-allowed-regions:

gcloud pubsub topics update TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1,REGION2

Remplacez les éléments suivants :

  • TOPIC_ID : ID du sujet que vous mettez à jour.
  • REGION1, REGION2 : liste des régions Google Cloud compatibles, séparées par des virgules.

REST

Pour mettre à jour un sujet avec une règle de stockage des messages, utilisez la fonction projects.topics.patch .

La requête doit être authentifiée avec un jeton d'accès dans le Authorization en-tête. 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.

 PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
 Authorization: Bearer $(gcloud auth application-default print-access-token)
 Content-Type: application/json --data @response-body.json

Spécifiez les champs suivants dans le corps de la requête :

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"], // Replace with your required region
    "enforceInTransit": true
  }
}

Où :

  • PROJECT_ID est l'ID de votre projet.

  • TOPIC_ID est l'ID de votre sujet.

  • REGION est la région spécifiée.

Exemple de réponse :

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Consultez les documentations de référence de l'API suivantes pour en savoir plus sur la modification des messages règles de stockage.

Gérer les différences entre les règles d'administration et les règles relatives aux thèmes

Afficher les différences entre les règles d'administration et les règles appliquées aux sujets

Console

La console Google Cloud affiche les différences entre les règles d'administration et les règles de stockage des messages appliquées à chaque sujet.

Pour vérifier si des sujets ne sont pas synchronisés avec votre règle d'administration:

  1. Accédez à la page Détails du sujet.

    Accéder aux détails du sujet

  2. Sélectionnez un sujet.

  3. Dans le panneau d'informations, sélectionnez l'onglet Règles de stockage.

    Ce panneau peut être réduit par défaut. S'il est réduit, cliquez sur Afficher le panneau d'informations.

    Vos règles de stockage sont affichées dans le panneau, ainsi que entre les règles d'administration et les règles relatives aux sujets.

CLI gcloud

Pour examiner la stratégie actuellement attribuée à un sujet, exécutez la commande suivante:

gcloud pubsub topics describe TOPIC_ID

Remplacez les éléments suivants :

  • TOPIC_ID: ID du sujet que vous examinez.

Résoudre les différences entre les règles d'administration et les règles appliquées aux sujets

Console

  1. Dans la console Google Cloud, ouvrez la page Détails du sujet.

    Accéder à Pub/Sub

  2. Sélectionnez un sujet.

  3. Dans le panneau d'informations, sélectionnez l'onglet Règles de stockage.

    Il est possible que ce panneau soit réduit par défaut. S'il est réduit, cliquez sur Afficher le panneau d'informations

    Vos règles de stockage sont affichées dans le panneau, ainsi que d'écarts.

    En cas de divergence, le panneau d'informations affiche trois options pour synchroniser les règles de stockage du sujet avec celles de votre organisation, y compris :

    • Les thèmes permettent le stockage dans des emplacements non autorisés.

      Mise à jour permettant de n'autoriser le stockage que lorsque votre stratégie le permet.

    • Le thème n'autorise pas le stockage dans certains emplacements autorisés.

      Mise à jour permettant d'autoriser le stockage partout où votre stratégie le permet.

    • Les thèmes sont obsolètes, avec des emplacements non autorisés et autorisés.

      Mise à jour permettant d'autoriser le stockage lorsque votre stratégie le permet.

  4. Sélectionnez l'option appropriée pour résoudre vos problèmes.

  5. Cliquez sur Mettre à jour le sujet.

    La boîte de dialogue Synchroniser avec la règle de stockage de l'organisation s'ouvre.

  6. Cliquez sur Mettre à jour le sujet.

Surveillance et dépannage

Pour vous aider à comprendre où sont stockées les données des messages, Pub/Sub propose des métriques réparties par région Google Cloud.

Grâce à ces métriques, vous pouvez :

  • comprendre comment vos données sont distribuées dans le monde entier ;
  • optimiser l'emplacement de déploiement des abonnés et des éditeurs en fonction de ces données.

Métriques de stockage des messages

Nombre de messages non confirmés stockés :

subscription/num_unacked_messages_by_region

Volume de données stockées :

subscription/unacked_bytes_by_region

Âge du message le plus ancien :

subscription/oldest_unacked_message_age_by_region

Des métriques analogues sont disponibles pour les sujets et les instantanés. En outre, des métriques correspondantes sont disponibles pour les messages confirmés qui sont éventuellement conservés pour une nouvelle lecture. Exemple :

subscription/num_retained_acked_messages_by_region

Implications en termes de performance et de disponibilité

La règle de stockage des messages n'affecte pas le contrat de niveau de service dans son ensemble, mais introduit un compromis en termes de contrôle de la disponibilité lorsque les éditeurs ou les abonnés s'exécutent en dehors de Google Cloud ou dans des régions non autorisées par la règle. Les utilisateurs qui exécutent des clients éditeurs dans l'ensemble des régions autorisées par la règle de stockage des messages ne constatent aucun changement en ce qui concerne la latence ou la disponibilité du service.

Pour comprendre ces compromis, il est utile d'examiner la manière dont les requêtes de publication sont acheminées. En règle générale, Pub/Sub tente de stocker vos messages aussi près que possible de la source de la requête. En principe, les requêtes provenant de Google Cloud sont liées aux instances Pub/Sub de la même région. Si un éditeur est situé dans une seule région, l'ajout de régions à la règle de stockage des messages n'augmente pas la disponibilité. Lorsque vous publiez en dehors de Google Cloud, une couche de routage supplémentaire pour envoyer la requête à une région Google Cloud à proximité Le service Pub/Sub est disponible.

Envisagez de définir une règle de stockage des messages qui n'autorise que la région us-central1.

  1. Un client éditeur qui s'exécute dans la région us-east1 émet une requête Publish.
  2. La requête est acheminée vers un serveur Pub/Sub dans la région us-east1.
  3. Plutôt que de stocker les données dans la région us-east1, la requête est acheminée vers la région la plus proche autorisée par la règle de stockage des messages, à savoir us-central1.
  4. Pub/Sub stocke les messages publiés dans la région us-central1 et transfère les messages aux abonnés à partir de cet emplacement.

Ce mécanisme a des conséquences sur la latence des requêtes et la disponibilité globale du système. Comme la requête traverse davantage de liens réseau, son traitement est plus long et présente un risque d'échec plus élevé. De plus, il est possible que les abonnés reçoivent le message un peu plus tard, car celui-ci doit être redirigé vers la région la plus proche avant d'être distribué. Si la règle autorise une seule région, mais que vos applications d'éditeur s'exécutent sur plusieurs régions, la disponibilité de l'application distribuée devient identique à celle de la seule région autorisée.

Étape suivante

  • Consultez la présentation des API Pub/Sub pour en savoir plus des informations sur l'utilisation des points de terminaison mondiaux ou locaux.