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.
Configura los ajustes de tu aplicación de App Engine en el archivo app.yaml
.
Este archivo especifica cómo se corresponden las rutas de las URLs con los controladores de solicitudes y los archivos estáticos.
El archivo app.yaml
también contiene información sobre el código de la aplicación, como el tiempo de ejecución y el identificador de la versión más reciente.
Cada servicio de tu aplicación tiene su propio archivo app.yaml
, que actúa como descriptor de su implementación. Primero debes crear el archivo app.yaml
para el servicio default
antes de poder crear e implementar archivos app.yaml
para otros servicios de tu aplicación.
Estructura de directorios
Para obtener más información sobre cómo estructurar varios servicios en tu aplicación, consulta el artículo Estructurar los servicios web en App Engine.Ejemplo
A continuación, se muestra un ejemplo de un archivo app.yaml
para una aplicación de Python 2:
runtime: python27 api_version: 1 threadsafe: true handlers: - url: / script: home.app - url: /index\.html script: home.app - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.app login: admin - url: /.* script: not_found.app
Una directiva script:
puede contener una ruta de archivo que termine en .py
, lo que significa que la secuencia de comandos usa CGI, o una ruta de módulo de Python, con nombres de paquetes separados por puntos, lo que significa que la secuencia de comandos usa WSGI.
Sintaxis
La sintaxis de app.yaml
es el formato YAML.
El formato YAML admite comentarios. Se ignora una línea que empieza por el carácter almohadilla (#
):
# This is a comment.
Los patrones de URL y de ruta de archivo usan la sintaxis de expresiones regulares extendidas POSIX, excepto los elementos de ordenación y las clases de ordenación. Se admiten las referencias inversas a coincidencias agrupadas (por ejemplo, \1
)
y estas extensiones de Perl: \w \W \s \S \d \D
.
Tiempo de ejecución y elementos de la aplicación
Elemento | Descripción |
---|---|
application |
Lo más recomendable es quitar el elemento
Para obtener más información sobre cómo usar estos comandos, consulta Implementar tu aplicación. El ID de la aplicación es el Google Cloud ID del proyecto de la consola que especificaste al crear la aplicación en la Google Cloud console. |
api_version |
Obligatorio. La versión de la API del entorno de ejecución determinado que usa tu aplicación. Este campo está obsoleto en los entornos de ejecución más recientes de App Engine.
Cuando Google anuncie la compatibilidad con una nueva versión de la API de un entorno de ejecución, tu aplicación desplegada seguirá usando la versión para la que se escribió. Para actualizar tu aplicación a una nueva versión de la API, cambia este valor y vuelve a implementar la aplicación en App Engine. Si especifica el valor
Por el momento, App Engine tiene una versión del |
auto_id_policy |
Opcional. Si
configura los identificadores de entidad automáticamente, puede cambiar el método
que se utiliza configurando la política de ID automático. Estas son las opciones válidas:
|
builtins |
Opcional.
El SDK de Python 2 incluye varios controladores integrados para funciones de aplicaciones comunes. La directiva Este campo ya no está disponible en el entorno de ejecución de Python 3. Puedes usar los siguientes controladores integrados:
builtins: - deferred: on - appstats: on
La directiva builtins: - name: on Equivale a: includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
Cuando usas
Por ejemplo, considere el siguiente handlers: - url: /.* script: main.app builtins: - appstats: on La lista de controladores resultante es la siguiente: [/_ah/stats, /.*]
Si el includes: - included.yaml
El archivo handlers: - url: /.* script: main.app builtins: - appstats: on La lista de controladores resultante es ahora la siguiente: [/.*, /_ah/stats]
El orden de colocación de la cláusula |
default_expiration |
Opcional. Define un periodo de caché predeterminado global para todos los controladores de archivos estáticos de una aplicación. También puedes configurar una duración de la caché para controladores de archivos estáticos específicos. El valor es una cadena de números y unidades, separados por espacios, donde las unidades pueden ser d para días, h para horas, m para minutos y s para segundos. Por ejemplo, runtime: python27 api_version: 1 threadsafe: true default_expiration: "4d 5h" handlers: # ... Para obtener más información, consulta Vencimiento de la caché. |
env_variables
|
Opcional.
Puedes definir variables de entorno en el archivo
Las variables de entorno que tienen el prefijo
os.environ :
env_variables: DJANGO_SETTINGS_MODULE: "myapp.settings" |
error_handlers |
Opcional. Se usa para configurar páginas de error personalizadas que se devuelven para diferentes tipos de error. Este elemento puede contener los siguientes elementos:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
Obligatorio. Una lista de patrones de URL y descripciones sobre cómo se deben procesar. App Engine puede gestionar URLs ejecutando código de aplicación o sirviendo archivos estáticos subidos con el código, como imágenes, CSS o JavaScript. Consulta la sintaxis de los controladores y los subelementos. |
includes
|
Opcional.
La directiva includes: - lib/user_admin.yaml App Engine resuelve la ruta incluida en el orden siguiente:
Si la directiva
Los patrones |
inbound_services |
Opcional.
Las aplicaciones deben habilitar esos servicios para poder recibir solicitudes entrantes. Puedes habilitar el servicio en una aplicación de Python 2
incluyendo una sección Existen los siguientes servicios de entrada:
inbound_services: - mail - warmup |
instance_class |
Opcional. La clase de instancia de este servicio. Están disponibles los siguientes valores en función del escalado de tu servicio:
|
libraries |
Opcional.
El entorno de ejecución de Python 2.7 incluye algunas bibliotecas de terceros. Algunas están disponibles de forma predeterminada, mientras que otras solo se pueden usar si se configuran. Puedes especificar la versión que quieras usar
indicando los valores Este campo ya no está disponible en el entorno de ejecución de Python 3. libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
Ten en cuenta que, cuando especificas Si estás desarrollando una aplicación que aún no tiene usuarios, no es necesario que monitorices las versiones nuevas. Sin embargo, si tu aplicación se está usando activamente, ten cuidado: puede que te sorprenda que tu aplicación empiece a usar una nueva versión de la biblioteca que no es compatible con versiones anteriores. Para ver una lista de las bibliotecas de terceros incluidas, consulta Bibliotecas de terceros. Puedes usar bibliotecas de terceros adicionales de Python puro instalándolas en un directorio local. Si usas el entorno flexible, consulta Usar bibliotecas de Python en el entorno flexible. |
module |
Nota: Los módulos ahora se llaman "Servicios". Para gestionar tu aplicación con gcloud CLI, usa el elemento service. |
runtime |
Obligatorio. El nombre del entorno de ejecución que usa tu aplicación. Por ejemplo, para especificar Python 2.7, usa lo siguiente: runtime: python27 |
service |
Antes, los servicios se llamaban módulos.
Solo se admite en la CLI de gcloud o en los complementos basados en la CLI de gcloud. Por ejemplo,
Obligatorio si se crea un
servicio.
Opcional para el servicio service: service-name
Nota: El comando module: service-name |
service_account |
Opcional. El elemento service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
skip_files |
Opcional.
El elemento
skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$
El patrón predeterminado excluye los archivos de copia de seguridad de Emacs con nombres del tipo
Para ampliar la lista de expresiones regulares anterior, copia y pega la lista anterior en tu skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ - ^(.*/)?.*\.bak$
Para omitir un directorio completo, añade el nombre del directorio a la lista. Por ejemplo, para omitir un directorio llamado skip_files: - logs/ |
threadsafe |
Obligatorio.
Configura tu aplicación para que use solicitudes simultáneas. Si usas la
biblioteca de threading de Python, los datos locales del hilo, tal como los devuelve Este campo ya no está disponible en el entorno de ejecución de Python 3. threadsafe: [true | false]
Nota: La directiva |
version |
Lo más recomendable es eliminar el elemento
Para obtener más información sobre cómo usar este comando, consulta el artículo Implementar tu aplicación. Identificador de la versión del código de la aplicación que despliega en App Engine.
El ID de versión puede contener letras minúsculas, dígitos y guiones. No puede empezar por el prefijo
Nota: Los nombres de las versiones deben empezar por una letra para distinguirlos de las instancias numéricas, que siempre se especifican con un número. De esta forma, se evita la ambigüedad con URLs como
Cada versión de una aplicación conserva su propia copia de |
vpc_access_connector |
Opcional. Configura tu aplicación para que use un conector de acceso a VPC sin servidor, lo que permite que la aplicación envíe solicitudes a recursos internos de tu red de VPC. Para obtener más información, consulta Conectarse a una red VPC.
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
Elemento Handlers
El elemento handlers
es obligatorio en el archivo de configuración app.yaml
. El elemento proporciona una lista de patrones de URL y descripciones de cómo deben gestionarse. App Engine puede gestionar URLs ejecutando código de aplicación o sirviendo archivos estáticos subidos con el código, como imágenes, CSS o JavaScript.
Los patrones se evalúan en el orden en que aparecen en el archivo app.yaml
, de arriba abajo. Se usa la primera asignación cuyo patrón coincida con la URL para gestionar la solicitud.
En la siguiente tabla se enumeran los subelementos del elemento handlers
que controlan el comportamiento de las secuencias de comandos, los archivos estáticos, los directorios estáticos y otros ajustes.
Elemento | Descripción |
---|---|
application_readable |
Opcional. Booleano. De forma predeterminada, los archivos declarados en los controladores de archivos estáticos se suben como datos estáticos y solo se sirven a los usuarios finales. Las aplicaciones no pueden leerlas. Si este campo tiene el valor true, los archivos también se suben como datos de código para que tu aplicación pueda leerlos.
Ambas subidas se contabilizan en las cuotas de recursos de almacenamiento de datos estáticos y de código.
Este campo está obsoleto en los entornos de ejecución más recientes de App Engine. |
expiration
|
Opcional.
El tiempo que un archivo estático servido por este controlador debe almacenarse en caché por proxies web y navegadores. El valor es una cadena de números y unidades separados por espacios. Las unidades pueden ser d (días), h (horas), m (minutos) y s (segundos). Por ejemplo,
"4d 5h" define la caducidad de la caché en 4 días y 5 horas después de
que se solicite el archivo por primera vez. Si se omite, se usará el de la aplicación.
default_expiration . Consulta más información sobre la caducidad de la caché.
|
http_headers |
Opcional. Puedes definir encabezados HTTP para las respuestas de tus controladores de archivos estáticos o de directorios. Si necesitas definir encabezados HTTP en tus controladores handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... Compatibilidad con CORSUno de los usos importantes de esta función es admitir el uso compartido de recursos entre dominios (CORS), como acceder a archivos alojados en otra aplicación de App Engine.
Por ejemplo, puedes tener una aplicación de juego A continuación, se explica cómo hacer que el controlador de archivos estáticos devuelva ese valor de encabezado de respuesta obligatorio: handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ...
Nota: Si quieres permitir que todos los usuarios accedan a tus recursos, puedes usar el comodín |
mime_type |
Opcional. Si se especifica, todos los archivos que sirva este controlador se servirán con el tipo MIME especificado. Si no se especifica, el tipo MIME de un archivo se derivará de la extensión del nombre de archivo. Si se sube el mismo archivo con varias extensiones, la extensión resultante puede depender del orden en el que se hayan subido los archivos. Para obtener más información sobre los tipos de medios MIME posibles, consulta el sitio web de tipos de medios MIME de IANA. |
redirect_http_response_code |
Opcional.
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always redirect_http_response_code: 301
Cuando se redirige la solicitud de un usuario, el código de estado HTTP se asignará al valor del parámetro |
script |
Opcional. Especifica la ruta a la secuencia de comandos desde el directorio raíz de la aplicación: handlers: # The root URL (/) is handled by the WSGI application named # "app" in home.py. No other URLs match this pattern. - url: / script: home.app # The URL /index.html is also handled by the home.py script. - url: /index\.html script: home.app # A regular expression can map parts of the URL to the # path of the script. - url: /browse/(books|videos|tools) script: \1.catalog.app # All other URLs use the WSGI application named in "app" # in not_found.py. - url: /.* script: not_found.app
Una directiva
Nota: Al igual que en el caso de una instrucción En los entornos de ejecución más recientes de App Engine, el el comportamiento de este campo ha cambiado. |
secure |
Opcional. Cualquier controlador de URLs puede usar el ajuste secure , incluidos los controladores de secuencias de comandos y los controladores de archivos estáticos. El elemento secure puede tener los siguientes valores:
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always
El servidor web de desarrollo no admite las conexiones HTTPS. Ignora el parámetro
Para
orientar sus anuncios a una versión específica de su aplicación mediante el
Para usar dominios personalizados con HTTPS, primero debes activar y configurar certificados SSL para ese dominio. El inicio y el cierre de sesión de las cuentas de Google siempre se realizan mediante una conexión segura, independientemente de cómo se configuren las URLs de la aplicación. |
static_dir
|
Opcional. Ruta al directorio que contiene los archivos estáticos, desde el directorio raíz de la aplicación. Todo lo que haya después del final del patrón
Cada archivo del directorio estático se sirve con el tipo MIME que
corresponde a la extensión de su nombre de archivo, a menos que se anule con el ajuste
Todos los archivos de este directorio se suben con tu aplicación como archivos estáticos. App Engine almacena y sirve archivos estáticos por separado de los archivos de tu aplicación. Los archivos estáticos no están disponibles en el sistema de archivos de la aplicación de forma predeterminada. Para cambiarlo, define la opción
handlers: # All URLs beginning with /stylesheets are treated as paths to # static files in the stylesheets/ directory. - url: /stylesheets static_dir: stylesheets # ... |
static_files
|
Opcional. Un controlador de patrones de archivos estáticos asocia un patrón de URL con rutas a archivos estáticos subidos con la aplicación. La expresión regular del patrón de URL puede definir agrupaciones de expresiones regulares que se utilicen en la creación de la ruta del archivo. Puedes usarlo en lugar de
handlers: # All URLs ending in .gif .png or .jpg are treated as paths to # static files in the static/ directory. The URL pattern is a # regular expression, with a grouping that is inserted into the # path to the file. - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ # ...
App Engine almacena y sirve archivos estáticos por separado de los archivos de la aplicación. Los archivos estáticos no están disponibles en el sistema de archivos de la aplicación de forma predeterminada. Para cambiarlo, define la opción
Los archivos estáticos no pueden ser los mismos que los archivos de código de la aplicación. Si una ruta de archivo estática coincide con la ruta de una secuencia de comandos utilizada en un controlador dinámico, la secuencia de comandos no estará disponible para el controlador dinámico. |
upload |
Opcional. Una expresión regular que coincida con las rutas de archivo de todos los archivos a los que hará referencia este controlador. Esto es necesario porque el controlador no puede determinar qué archivos del directorio de tu aplicación corresponden a los patrones |
url |
Elemento obligatorio en El patrón de URL tiene algunas diferencias de comportamiento cuando se usa con los siguientes elementos:
|
Escalar elementos
Los elementos de la siguiente tabla configuran cómo se escala tu aplicación. Para obtener más información sobre cómo se escalan las aplicaciones de App Engine, consulta Tipos de escalado.
Elemento | Descripción |
---|---|
automatic_scaling |
Opcional. Solo se aplica a las aplicaciones que usan una clase instance de F1 o superior. Especifica este elemento para cambiar la configuración predeterminada del escalado automático, como los niveles mínimo y máximo del número de instancias, la latencia y las conexiones simultáneas de un servicio. Este elemento puede contener los siguientes elementos:
automatic_scaling: target_cpu_utilization: 0.65 min_instances: 5 max_instances: 100 min_pending_latency: 30ms max_pending_latency: automatic max_concurrent_requests: 50 |
basic_scaling |
Las aplicaciones que usen una clase instance de B1 o una versión posterior deben especificar este elemento o Este elemento permite el escalado básico de las clases de instancia B1 y superiores, y puede contener los siguientes elementos:
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
Las aplicaciones que usen una clase instance de B1 o una versión posterior deben especificar este elemento o Este elemento permite escalar manualmente las clases de instancia B1 y superiores, y puede contener el siguiente elemento:
manual_scaling: instances: 5 |