Configura la localidad de los datos con endpoints regionales

En esta página, se describe cómo configurar las bibliotecas cliente de Cloud Firestore para usar un endpoint regional o multirregional.

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

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

  • Endpoint regional: Un endpoint regional aplica restricciones que garantizan que los datos se transmitan, almacenen y procesen en una región de Google Cloud especificada. Para asegurarte de que el endpoint de servicio procese las solicitudes de Cloud Firestore de tu app en la misma región que tu base de datos, especifica un endpoint regional en la biblioteca cliente.

  • Endpoint multirregional: Un endpoint multirregional aplica restricciones para garantizar que los datos se almacenen y procesen en una multirregión especificada. Para asegurarte de que el endpoint de servicio procese las solicitudes de Cloud Firestore de tu app en la misma ubicación multirregional que tu base de datos, especifica un endpoint multirregional en la biblioteca cliente.

Configura un endpoint regional o multirregional

El método para configurar un endpoint regional o multirregional es el mismo: debes proporcionar la cadena del endpoint cuando inicializas la biblioteca cliente. En los siguientes ejemplos, se muestra cómo configurar la cadena de endpoint con un endpoint regional (firestore.us-central1.rep.googleapis.com). Para usar un endpoint multirregional, proporciona una cadena de endpoint multirregional que corresponda a la ubicación de tu base de datos (por ejemplo, firestore.us.rep.googleapis.com para nam5).

Java


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 firestore.us-central1.rep.googleapis.com:443
            .setHost(endpoint)
            .build();
    Firestore dbWithEndpoint = firestoreOptions.getService();

    return dbWithEndpoint;
  }

}

Python

ENDPOINT = "firestore.africa-south1.rep.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 endpoints regionales y multirregionales

Endpoints regionales (REP):

Cloud Firestore admite endpoints regionales para las ubicaciones regionales que se indican aquí ubicaciones de Cloud Firestore.

Usa el siguiente formato para definir endpoints regionales:

Java

  firestore.REGION_NAME.rep.googleapis.com:443

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

Python

  firestore.REGION_NAME.rep.googleapis.com

Go

  firestore.REGION_NAME.rep.googleapis.com:443

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

Reemplaza REGION_NAME por el nombre de un host regional.

Estos son algunos ejemplos de nombres de host:

  • firestore.us-central1.rep.googleapis.com
  • firestore.europe-west1.rep.googleapis.com

Endpoints multirregionales (MREP)

Para los endpoints multirregionales, usa us para las ubicaciones nam5 y nam7, y eu para la ubicación eur3 (consulta Ubicaciones multirregionales).

Java

  firestore.us.rep.googleapis.com:443
  firestore.eu.rep.googleapis.com:443

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

Python

  firestore.us.rep.googleapis.com
  firestore.eu.rep.googleapis.com

Go

  firestore.us.rep.googleapis.com:443
  firestore.eu.rep.googleapis.com:443

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

Limitaciones

Endpoints de ubicación (obsoleto)

Los endpoints de ubicación dejaron de estar disponibles. En su lugar, usa endpoints regionales o multirregionales.

Anteriormente, Cloud Firestore admitía endpoints locales con el siguiente formato:

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.

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 Cloud Firestore.

Restringe el uso del extremo de API global

Para ayudar a aplicar de manera forzosa el uso de endpoints regionales y multirregionales, usa la restricción de políticas de la organización constraints/gcp.restrictEndpointUsage para bloquear las solicitudes al endpoint de API global. Para obtener más información, consulta Cómo restringir el uso de endpoints.