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 PHP 5:
runtime: php55 api_version: 1 handlers: # Serve images as static resources. - url: /(.+\.(gif|png|jpg))$ static_files: \1 upload: .+\.(gif|png|jpg)$ application_readable: true # Serve php scripts. - url: /(.+\.php)$ script: \1
En el ejemplo anterior, los archivos con las extensiones gif
, png
o jpg
se servirán como recursos estáticos. Los archivos se han configurado para que el código de la aplicación pueda leerlos en el tiempo de ejecución.
El ejemplo también servirá todos los scripts PHP. Puedes restringir el controlador de secuencias de comandos a las secuencias de comandos de nivel raíz mediante la expresión url: /([^/]+\.php)
. Puede que las aplicaciones ya existentes necesiten simular el enrutamiento de Apache mod_rewrite$_GET['q']
.
A continuación, se muestra una app.yaml
más extensa:
runtime: php55 api_version: 1 handlers: - url: / script: home.php - url: /index\.html script: home.php - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.php login: admin - url: /.* script: not_found.php
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 |
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: php55 api_version: 1 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
env_variables: MY_VAR: "my value" MY_VAR y my value son el nombre y el valor de la variable de entorno que quieres definir. Cada entrada de variable de entorno tiene una sangría de dos espacios en el elemento env_variables . Las variables de entorno a las que no se les ha asignado ningún valor tienen el valor predeterminado "None" .
Después, puede obtener el valor de estas variables mediante echo getenv('MY_VAR'); echo $_SERVER['MY_VAR']; |
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. |
inbound_services |
Opcional.
Las aplicaciones deben habilitar esos servicios para poder recibir solicitudes entrantes. Puedes habilitar el servicio en una aplicación PHP 5
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:
|
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 PHP 5, usa lo siguiente: runtime: php55 |
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/ |
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 |
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.php 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: - url: /profile/(.*)/(.*) script: /employee/\2/\1.php # specify a script 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.php 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 |