ID da região
O REGION_ID é um código abreviado que a Google atribui com base na região que seleciona quando cria a sua app. O código não corresponde a um país ou uma província, embora alguns IDs de regiões possam parecer semelhantes aos códigos de países e províncias usados frequentemente. Para apps criadas após
fevereiro de 2020, REGION_ID.r está incluído nos
URLs do App Engine. Para apps existentes criadas antes desta data, o
ID da região é opcional no URL.
Saiba mais acerca dos IDs de regiões.
Configura as definições da app do App Engine no ficheiro app.yaml.
Este ficheiro especifica como os caminhos dos URLs correspondem aos processadores de pedidos e aos ficheiros estáticos.
O ficheiro app.yaml também contém informações sobre o código da sua app, como o tempo de execução e o identificador da versão mais recente.
Cada serviço
na sua app tem o seu próprio ficheiro app.yaml, que funciona como um descritor para a respetiva
implementação. Primeiro, tem de criar o ficheiro app.yaml para o serviço default antes de poder criar e implementar ficheiros app.yaml para serviços adicionais na sua app.
Estrutura do diretório
Para saber como estruturar vários serviços na sua app, consulte o artigo Estruturar serviços Web no App Engine.Exemplo
Segue-se um exemplo de um ficheiro app.yaml para uma aplicação 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
Uma diretiva script: pode conter um caminho de ficheiro que termina em .py, o que significa que o script usa CGI, ou um caminho de módulo Python, com nomes de pacotes separados por pontos, o que significa que o script usa WSGI.
Sintaxe
A sintaxe de app.yaml é o formato YAML.
O formato YAML suporta comentários. Uma linha que começa com um caráter de cardinal (#) é ignorada:
# This is a comment.
Os padrões de URL e caminho do ficheiro usam a sintaxe de expressão regular estendida POSIX, excluindo elementos de ordenação e classes de ordenação. As referências anteriores a correspondências agrupadas (por exemplo, \1) são suportadas, tal como estas extensões Perl: \w \W \s \S \d \D.
Tempo de execução e elementos da app
| Elemento | Descrição |
|---|---|
application |
A abordagem recomendada é remover o elemento
Para mais informações sobre a utilização destes comandos, consulte o artigo Implementar a sua app. O ID da aplicação é o Google Cloud ID do projeto da consola que especificou quando criou a aplicação na Google Cloud console. |
api_version |
Obrigatório. A versão da API no ambiente de tempo de execução fornecido que é usada pela sua app. Este campo foi descontinuado em runtimes do App Engine mais recentes.
Quando a Google anuncia suporte para uma nova versão da API de um ambiente de execução, a sua app implementada continua a usar a versão para a qual foi escrita. Para atualizar a sua app para uma nova versão da
API, altere este valor e, em seguida, volte a implementar a app no App
Engine. Quando especifica o valor
Neste momento, o App Engine tem uma versão do
ambiente de tempo de execução:
|
auto_id_policy |
Opcional. Se estiver a
definir identificadores de entidades automaticamente, pode alterar o método
usado definindo a política de ID automático. Seguem-se as opções válidas:
|
builtins |
Opcional.
O SDK Python 2 inclui vários controladores incorporados para
funções comuns da aplicação. A diretiva Este campo foi descontinuado no tempo de execução do Python 3. Os seguintes controladores integrados estão disponíveis para utilização:
builtins: - deferred: on - appstats: on
A diretiva builtins: - name: on É equivalente a: includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
Quando usa
Por exemplo, considere o seguinte handlers: - url: /.* script: main.app builtins: - appstats: on A lista de controladores resultante é: [/_ah/stats, /.*]
Se o elemento includes: - included.yaml
O ficheiro handlers: - url: /.* script: main.app builtins: - appstats: on A lista resultante de controladores é agora: [/.*, /_ah/stats]
A ordem de colocação da cláusula |
default_expiration |
Opcional. Define um período de cache predefinido global para todos os controladores de ficheiros estáticos de uma aplicação. Também pode configurar uma duração da cache para gestores de ficheiros estáticos específicos. O valor é uma string de números e unidades, separados por
espaços, em que as unidades podem ser d para dias, h para horas, m para minutos e
s para segundos. Por exemplo, runtime: python27 api_version: 1 threadsafe: true default_expiration: "4d 5h" handlers: # ... Para mais informações, consulte o artigo Validade da cache. |
env_variables
|
Opcional.
Pode definir variáveis de ambiente no ficheiro
As variáveis de ambiente com o prefixo
os.environ:
env_variables: DJANGO_SETTINGS_MODULE: "myapp.settings" |
error_handlers |
Opcional. Usado para configurar páginas de erro personalizadas que são devolvidas para diferentes tipos de erros. Este elemento pode conter os seguintes elementos:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
Obrigatório. Uma lista de padrões de URL e descrições de como devem ser processados. O App Engine pode processar URLs executando código de aplicação ou publicando ficheiros estáticos carregados com o código, como imagens, CSS ou JavaScript. |
includes
|
Opcional.
A diretiva includes: - lib/user_admin.yaml O App Engine resolve o caminho incluído pela seguinte ordem:
Se a diretiva
Os padrões |
inbound_services |
Opcional.
As aplicações têm de ativar esses serviços antes de poderem receber pedidos
de entrada. Pode ativar o serviço para uma app Python 2
incluindo uma secção Estão disponíveis os seguintes serviços de entrada:
inbound_services: - mail - warmup |
instance_class |
Opcional. A classe de instância para este serviço. Os seguintes valores estão disponíveis consoante o dimensionamento do seu serviço:
|
libraries |
Opcional.
O tempo de execução do Python 2.7 inclui algumas bibliotecas de terceiros. Algumas destas opções estão disponíveis por predefinição; outras só estão
disponíveis se forem configuradas. Pode especificar a versão que quer usar
especificando os valores Este campo foi descontinuado no tempo de execução do Python 3. libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
Tenha em atenção que, quando especifica Se estiver a desenvolver uma aplicação que ainda não tem utilizadores: não precisa de monitorizar novas versões. No entanto, se a sua aplicação estiver a ser usada ativamente, tenha cuidado: pode ficar surpreendido com o facto de a sua aplicação começar a usar uma nova versão da biblioteca não compatível com versões anteriores. Para ver uma lista das bibliotecas de terceiros incluídas, consulte o artigo Bibliotecas de terceiros. Pode usar bibliotecas de terceiros adicionais de Python puro instalando-as num diretório local. Se estiver a usar o ambiente flexível, consulte o artigo Usar bibliotecas Python no ambiente flexível. |
module |
Nota: os módulos chamam-se agora Serviços. Para gerir a sua app com a CLI gcloud, use o elemento service. |
runtime |
Obrigatório. O nome do ambiente de tempo de execução usado pela sua app. Por exemplo, para especificar o Python 2.7, use: runtime: python27 |
service |
Os serviços eram anteriormente conhecidos como módulos.
Apenas suportado pela CLI gcloud ou por plug-ins baseados na CLI gcloud, por exemplo:
Obrigatório se estiver a criar um
serviço.
Opcional para o serviço service: service-name
Nota: o comando
module: service-name |
service_account |
Opcional. O elemento service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
skip_files |
Opcional.
O elemento
O skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$
O padrão predefinido exclui ficheiros de cópias de segurança do Emacs com nomes do formulário
Para prolongar a lista de expressões regulares acima, copie e cole a lista acima no seu skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ - ^(.*/)?.*\.bak$
Para ignorar um diretório completo, adicione o nome do diretório à
lista. Por exemplo, para ignorar um diretório denominado skip_files: - logs/ |
threadsafe |
Obrigatório.
Configura a sua aplicação para usar pedidos simultâneos. Se usar a
biblioteca de threading do Python, os dados locais do thread, conforme devolvidos por Este campo foi descontinuado no tempo de execução do Python 3. threadsafe: [true | false]
Nota: a diretiva |
version |
A abordagem recomendada é remover o elemento
Para mais informações sobre a utilização deste comando, consulte o artigo Implementar a sua app. Um identificador da versão do código da sua aplicação que implementa no App Engine.
O ID da versão pode conter letras minúsculas, dígitos e hífens. Não pode começar com o prefixo
Nota: os nomes das versões devem começar com uma letra para os distinguir
das instâncias numéricas, que são sempre especificadas por um número. Isto evita a ambiguidade com URLs como
Cada versão de uma aplicação mantém a sua própria cópia de
|
vpc_access_connector |
Opcional. Configura a sua aplicação para usar um conetor do Acesso a VPC sem servidor, o que permite à aplicação enviar pedidos a recursos internos na sua rede VPC. Para mais informações, consulte o artigo Estabelecer ligação a uma rede VPC.
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
Elemento Handlers
O elemento handlers é um elemento obrigatório no ficheiro de configuração app.yaml. O elemento fornece uma lista de padrões de URL e descrições de como devem ser processados. O App Engine pode processar URLs executando código de aplicação ou publicando ficheiros estáticos carregados com o código, como imagens, CSS ou JavaScript.
Os padrões são avaliados pela ordem em que aparecem no ficheiro app.yaml, de cima para baixo. O primeiro mapeamento cujo padrão corresponde ao URL é o que é usado para processar o pedido.
A tabela seguinte lista os subelementos do elemento handlers que controlam o comportamento dos scripts, ficheiros estáticos, diretórios estáticos e outras definições.
| Elemento | Descrição |
|---|---|
application_readable |
Opcional. Booleano. Por predefinição, os ficheiros declarados em controladores de ficheiros estáticos
são carregados como dados estáticos e só são publicados para utilizadores finais. Não
podem ser lidos por uma aplicação. Se este campo estiver definido como verdadeiro, os ficheiros também são carregados como dados de código para que a sua aplicação os possa ler.
Ambos os carregamentos são cobrados em função das quotas de recursos de armazenamento de código e dados estáticos.
Este campo foi descontinuado em runtimes do App Engine mais recentes. |
expiration
|
Opcional.
O período durante o qual um ficheiro estático publicado por este controlador deve ser colocado em cache por proxies Web e navegadores. O valor é uma string de números e unidades, separados por espaços, em que as unidades podem ser d para dias, h para horas, m para minutos e s para segundos. Por exemplo,
"4d 5h" define a expiração da cache para 4 dias e 5 horas após
o ficheiro ser pedido pela primeira vez. Se for omitido, é usado o valor default_expiration da aplicação. Consulte Expiração da cache para mais detalhes.
|
http_headers |
Opcional. Pode definir cabeçalhos HTTP para respostas dos processadores de diretórios ou ficheiros estáticos. Se precisar de definir cabeçalhos HTTP
nos seus processadores handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... Compatibilidade com CORSUma utilização importante desta funcionalidade é suportar a partilha de recursos de origem cruzada (CORS), como aceder a ficheiros alojados por outra app do App Engine.
Por exemplo, pode ter uma app de jogos Veja como faria com que o seu controlador de ficheiros estáticos devolvesse esse valor do cabeçalho da resposta obrigatório: handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ...
Nota: se quiser permitir que todos acedam aos seus recursos, pode usar o caráter universal |
mime_type |
Opcional. Se for especificado, todos os ficheiros publicados por este controlador vão ser publicados com o tipo MIME especificado. Se não for especificado, o tipo MIME de um ficheiro é derivado da extensão do nome de ficheiro. Se o mesmo ficheiro for carregado com várias extensões, a extensão resultante pode depender da ordem em que os carregamentos ocorreram. Para mais informações sobre os tipos de suportes MIME possíveis, consulte o Website de tipos de suportes MIME da IANA |
redirect_http_response_code |
Opcional.
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always redirect_http_response_code: 301
Quando o pedido de um utilizador é redirecionado, o código de estado HTTP é definido
para o valor do parâmetro |
script |
Opcional. Especifica o caminho para o script a partir do diretório raiz da aplicação: 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
Uma diretiva
Nota: tal como para uma declaração Nos runtimes do App Engine mais recentes, o comportamento deste campo foi alterado. |
secure |
Opcional. Qualquer controlador de URL pode usar a definição secure, incluindo controladores de scripts e controladores de ficheiros estáticos. O elemento secure tem os seguintes
valores possíveis:
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always
O servidor Web de desenvolvimento não suporta ligações HTTPS. Ignora o parâmetro
Para
segmentar uma versão específica da sua app através do domínio
Para usar domínios personalizados com HTTPS, tem de ativar e configurar certificados SSL para esse domínio. O início e o fim de sessão nas Contas Google são sempre realizados através de uma ligação segura, independentemente da forma como os URLs da aplicação estão configurados. |
static_dir
|
Opcional. O caminho para o diretório que contém os ficheiros estáticos, a partir do diretório raiz da aplicação. Tudo o que estiver após o final do padrão
Cada ficheiro no diretório estático é publicado com o tipo MIME que
corresponde à extensão do nome de ficheiro, a menos que seja substituído pela
definição
Todos os ficheiros neste diretório são carregados com a sua app como ficheiros estáticos. O App Engine armazena e publica ficheiros estáticos separadamente
dos ficheiros da sua app. Por predefinição, os ficheiros estáticos não estão disponíveis no sistema de ficheiros da app. Pode alterar esta opção definindo a opção
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. Um controlador de padrões de ficheiros estáticos associa um padrão de URL a caminhos para ficheiros estáticos carregados com a aplicação. A expressão regular do padrão de URL pode definir agrupamentos de expressões regulares a usar na construção do caminho do ficheiro. Pode usar isto em vez 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)$ # ...
O App Engine armazena e publica ficheiros estáticos separadamente
dos ficheiros de aplicações. Por predefinição, os ficheiros estáticos não estão disponíveis no sistema de ficheiros da aplicação. Pode alterar esta opção definindo a opção
Os ficheiros estáticos não podem ser iguais aos ficheiros de código da aplicação. Se um caminho de ficheiro estático corresponder a um caminho para um script usado num controlador dinâmico, o script não vai estar disponível para o controlador dinâmico. |
upload |
Opcional. Uma expressão regular que corresponde aos caminhos dos ficheiros de todos os ficheiros que vão ser referenciados por este controlador. Isto é necessário porque o controlador não consegue determinar que ficheiros no diretório da sua aplicação correspondem aos padrões |
url |
Elemento obrigatório em O padrão de URL tem algumas diferenças no comportamento quando usado com os seguintes elementos:
|
Dimensionar elementos
Os elementos na tabela seguinte configuram a forma como a sua aplicação é dimensionada. Para saber mais sobre como as apps do App Engine são dimensionadas, consulte os tipos de dimensionamento.
| Elemento | Descrição |
|---|---|
automatic_scaling |
Opcional. Aplicável apenas a aplicações que usam uma instância da classe F1 ou superior. Especifique este elemento para alterar as predefinições do dimensionamento automático, como a definição dos níveis mínimo e máximo para o número de instâncias, a latência e as ligações simultâneas para um serviço. Este elemento pode conter os seguintes 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 |
As aplicações que usam uma
instância
da classe de B1 ou superior têm de especificar este elemento ou
Este elemento permite o dimensionamento básico das classes de instâncias B1 e superiores, pode conter os seguintes elementos:
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
As aplicações que usam uma
instância
da classe de B1 ou superior têm de especificar este elemento ou
Este elemento permite o dimensionamento manual das classes de instâncias B1 e superiores e pode conter o seguinte elemento:
manual_scaling: instances: 5 |