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 |