Archivo de configuración dispatch.yaml

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Más información sobre los IDs de región

La dispatch.yaml te permite anular las reglas de enrutamiento. Puedes usar dispatch.yaml para enviar solicitudes entrantes a un servicio específico (antes conocido como módulos) en función de la ruta o el nombre de host de la URL.

Para obtener más información, consulta Cómo se enrutan las solicitudes.

Una aplicación solo puede tener un archivo dispatch.yaml, y las reglas de enrutamiento de ese archivo se aplican a todos los servicios y versiones de la aplicación. Las reglas de enrutamiento también se aplican a las URLs que se usan en un archivo cron.

Desplegar el archivo de envío

Antes de implementar el archivo de configuración, debes asegurarte de que todos los servicios definidos en él ya se hayan implementado en App Engine. Para implementar el archivo dispatch.yaml, ejecuta el comando gcloud app deploy desde el directorio que contiene el archivo dispatch.yaml:

gcloud app deploy dispatch.yaml

Para obtener más información sobre los comandos de implementación, consulta Implementar una aplicación.

Sintaxis

El elemento raíz del archivo dispatch.yaml es dispatch: y contiene una lista de definiciones de rutas que se especifican mediante los siguientes subelementos.

Las reglas que definas en tu archivo de configuración deben usar patrones de URL HTTP que incluyan la notación "." para separar los subdominios. No se admiten las URLs definidas con la notación HTTPS "-dot-".

Las reglas de envío dependen del orden y solo se aplicará la primera regla que coincida con una URL.

Elemento Descripción
service

Especifica el nombre del servicio que gestionará las solicitudes que coincidan con el patrón url. Ten en cuenta que los servicios se llamaban módulos anteriormente.

url

En el elemento url, se define el patrón de URLpattern within quotes que puede incluir el nombre de host y la ruta de la URL, que no pueden tener más de 100 caracteres.

En el elemento service, especifica el nombre del servicio que quieres que gestione las solicitudes entrantes que coincidan con el patrón de URL del elemento url.

Nota: Puedes incluir patrones glob, como el carácter comodín *, en el elemento url. Sin embargo, estos patrones solo se pueden usar antes del nombre de host y al final de la ruta de la URL.

Las rutas de URL que empiezan por /_ah/ no se enrutan mediante el archivo de despacho.

Ejemplo

A continuación, se muestra un archivo de configuración de envío de ejemplo que enruta las solicitudes a https://simple-sample.uc.r.appspot.com y las solicitudes como https://simple-sample.uc.r.appspot.com/favicon.ico al servicio default. Todo el contenido estático se sirve desde el servicio default. Las solicitudes móviles, como https://simple-sample.uc.r.appspot.com/mobile/, se dirigen a un frontend móvil, y las solicitudes de trabajadores, como https://simple-sample.uc.r.appspot.com/work/, se dirigen a un backend estático.

Ejemplo:

dispatch:
  # Default service serves the typical web resources and all static resources.
  - url: "*/favicon.ico"
    service: default

  # Default service serves simple hostname request.
  - url: "simple-sample.uc.r.appspot.com/"
    service: default

  # Send all mobile traffic to the mobile frontend.
  - url: "*/mobile/*"
    service: mobile-frontend

  # Send all work to the one static backend.
  - url: "*/work/*"
    service: static-backend

Si prefieres reglas de enrutamiento generales que coincidan con muchas solicitudes posibles, puedes definir reglas con ámbitos más amplios.

Ejemplo:

# Send any path that begins with “simple-sample.uc.r.appspot.com/mobile” to the mobile-frontend service.
- url: "simple-sample.uc.r.appspot.com/mobile*"
  service: mobile-frontend

# Send any domain/sub-domain with a path that starts with “work” to the static backend service.
- url: "*/work*"
  service: static-backend

También puedes escribir expresiones más estrictas.

Ejemplo:

# Matches the path "/fun", but not "/fun2" or "/fun/other"
- url: "*/fun"
  service: mobile-frontend

# Matches the hostname 'customer1.myapp.com', but not '1.customer1.myapp.com.
- url: "customer1.myapp.com/*"
  service: static-backend

Puedes crear reglas para redirigir las solicitudes de dominio entrantes a un servicio. Las siguientes reglas enrutan las solicitudes entrantes de "customer1.myapp.com" al servicio predeterminado y las solicitudes entrantes de subdominios a un servicio de backend estático.

Ejemplo:

# Matches the domain name 'customer1.myapp.com' and directs all the request to default service 
- url: "customer1.myapp.com/*"
  service: default

# Matches all the subdomains of 'customer1.myapp.com' and directs all the request to static-backend service
- url: "*.customer1.myapp.com/*"
  service: static-backend

Límites

El archivo de envío puede contener hasta 20 reglas de enrutamiento. Al especificar la cadena de URL, ni el nombre de host ni la ruta pueden tener más de 100 caracteres.

Eliminar todas las reglas de envío

Para eliminar todas las reglas de envío:

  1. Edita el contenido del archivo dispatch.yaml para que sea el siguiente:

    dispatch: []
    
  2. Despliega el archivo dispatch.yaml en App Engine.