Configura la localidad de los datos con extremos de ubicación

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

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

  • Extremo global: De forma predeterminada, las bibliotecas cliente de Firestore envían solicitudes a la API a un extremo de servicio global llamado firestore.googleapis.com. El extremo de servicio global enruta la solicitud a tu base de datos. Durante el enrutamiento, es posible que una solicitud pase por un extremo de servicio de ubicación en una ubicación diferente de la de tu base de datos.

  • Extremo de ubicación: Un extremo de ubicación aplica restricciones regionales, lo que garantiza que los datos se almacenen y procesen en una región especificada. Para garantizar que el extremo del servicio procese las solicitudes de Firestore de tu app en la misma región que tu base de datos, especifica un extremo de ubicación en la biblioteca cliente.

Cómo establecer un extremo de ubicación

En los siguientes ejemplos, se muestra cómo establecer un extremo de ubicación cuando inicializas un cliente de Firestore. Si configuras un extremo de ubicación diferente del lugar donde residen tus datos, es posible que se produzca un error PermissionDeniedError.

Java

Para autenticarte en Firestore, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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. Si deseas obtener más información, consulta Configura la autenticación para 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 extremos de ubicación

Firestore admite extremos de ubicación para ubicaciones regionales y multirregionales.

Usa el siguiente formato para definir los extremos de ubicación:

Java

  REGION_NAME-firestore.googleapis.com:443

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

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 extremo.

Reemplaza 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 obtener una lista completa de los nombres de host regionales y multirregionales, consulta Ubicaciones de Firestore.

Restringe el uso del extremo de API global

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

¿Qué sigue?