Configurar la localidad de los datos con puntos finales de ubicación

En esta página se describe cómo configurar las bibliotecas de cliente de Firestore para usar un endpoint de ubicación.

Cuando usas bibliotecas de cliente de Firestore, puedes usar cualquiera de los siguientes endpoints:

  • Endpoint global: de forma predeterminada, las bibliotecas de cliente de Firestore envían solicitudes de API a un endpoint de servicio global llamado firestore.googleapis.com. El endpoint de servicio global dirige la solicitud a tu base de datos. Durante el enrutamiento, una solicitud puede pasar por un endpoint de servicio de ubicación en una ubicación diferente a la de tu base de datos.

  • Endpoint de ubicación: un endpoint de ubicación aplica restricciones regionales, lo que asegura que los datos se almacenen y se traten en una región específica. Para garantizar que el endpoint de servicio procese las solicitudes de Firestore de tu aplicación en la misma región que tu base de datos, especifica un endpoint de ubicación en la biblioteca cliente.

Definir un endpoint de ubicación

En los ejemplos siguientes se muestra cómo definir un endpoint de ubicación al inicializar un cliente de Firestore. Si se define un endpoint de ubicación distinto de aquel en el que residen los datos, puede producirse un error PermissionDeniedError.

Java

Para autenticarte en Firestore, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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

Para autenticarte en Firestore, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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)

Semántica de los puntos finales de ubicación

Firestore admite endpoints de ubicación tanto para regiones como para multirregiones.

Utiliza el siguiente formato para definir los endpoints de ubicación:

Java

  REGION_NAME-firestore.googleapis.com:443

Asegúrate de que el número de puerto esté definido junto con el endpoint.

Python

  REGION_NAME-firestore.googleapis.com

Go

  REGION_NAME-firestore.googleapis.com:443

Asegúrate de que el número de puerto esté definido junto con el endpoint.

Sustituye REGION_NAME por el nombre de un host regional o multirregional.

Estos son algunos ejemplos de nombres de host:

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

Para ver una lista completa de los nombres de host multirregionales y regionales, consulta Ubicaciones de Firestore.

Restringir el uso de endpoints de API globales

Para ayudar a aplicar el uso de endpoints regionales, usa la restricción de la política de organización constraints/gcp.restrictEndpointUsage para bloquear las solicitudes al endpoint de la API global. Para obtener más información, consulta Restringir el uso de endpoints.

Siguientes pasos