Configurer la localité des données avec des points de terminaison localisés

Cette page explique comment configurer les bibliothèques clientes Firestore pour utiliser un point de terminaison localisé.

Lorsque vous utilisez les bibliothèques clientes Firestore, vous pouvez utiliser l'un des points de terminaison suivants :

  • Point de terminaison global : par défaut, les bibliothèques clientes Firestore envoient des requêtes API à un point de terminaison de service global nommé firestore.googleapis.com. Le point de terminaison du service mondial achemine la requête vers votre base de données. Lors du routage, une requête peut transiter par un point de terminaison de service de localisation dans un emplacement différent de celui de votre base de données.

  • Point de terminaison géographique : un point de terminaison géographique applique des restrictions régionales, en veillant à ce que les données soient stockées et traitées dans une région spécifique. Pour garantir que le point de terminaison de service traite les requêtes Firestore de votre application dans la même région que votre base de données, spécifiez un point de terminaison géographique dans la bibliothèque cliente.

Définir un point de terminaison localisé

Les exemples suivants montrent comment définir un point de terminaison géographique lorsque vous initialisez un client Firestore. Si vous définissez un point de terminaison géographique autre que celui où résident vos données, vous risquez de rencontrer une erreur PermissionDeniedError.

Java

Pour vous authentifier auprès de Firestore, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.firestore.Firestore;
import com.google.cloud.firestore.FirestoreOptions;


/**
 * Demonstrate how to set a regional endpoint.
 */
public class RegionalEndpointSnippets {

  /**
   * Create a client with a regional endpoint.
   **/
  public Firestore regionalEndpoint(String projectId, String endpoint) throws Exception {
    FirestoreOptions firestoreOptions =
        FirestoreOptions.newBuilder()
            .setProjectId(projectId)
            .setCredentials(GoogleCredentials.getApplicationDefault())
            // set endpoint like nam5-firestore.googleapis.com:443
            .setHost(endpoint)
            .build();
    Firestore dbWithEndpoint = firestoreOptions.getService();

    return dbWithEndpoint;
  }

}

Python

Pour vous authentifier auprès de Firestore, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

ENDPOINT = "nam5-firestore.googleapis.com"
client_options = ClientOptions(api_endpoint=ENDPOINT)
db = firestore.Client(client_options=client_options)

cities_query = db.collection("cities").limit(2).get()
for r in cities_query:
    print(r)

Sémantique des points de terminaison utilisant la localisation

Firestore est compatible avec les points de terminaison géographiques pour les emplacements régionaux et multirégionaux.

Utilisez le format suivant pour définir les points de terminaison de localisation :

Java

  REGION_NAME-firestore.googleapis.com:443

Assurez-vous que le numéro de port est défini avec le point de terminaison.

Python

  REGION_NAME-firestore.googleapis.com

Go

  REGION_NAME-firestore.googleapis.com:443

Assurez-vous que le numéro de port est défini avec le point de terminaison.

Remplacez REGION_NAME par le nom d'un nom d'hôte régional ou multirégional.

Voici quelques exemples de noms d'hôte :

  • eur3-firestore.googleapis.com
  • nam5-firestore.googleapis.com
  • europe-west6-firestore.googleapis.com
  • asia-northeast2-firestore.googleapis.com

Pour obtenir la liste complète des noms d'hôte multirégionaux et régionaux, consultez Emplacements Firestore.

Restreindre l'utilisation des points de terminaison de l'API globale

Pour appliquer l'utilisation de points de terminaison régionaux, utilisez la contrainte de règle d'administration constraints/gcp.restrictEndpointUsage afin de bloquer les requêtes envoyées au point de terminaison d'API mondial. Pour en savoir plus, consultez Restreindre l'utilisation des points de terminaison.

Étapes suivantes