ID da região
O REGION_ID
é um código abreviado que o Google atribui
com base na região que você selecionou ao criar o aplicativo. O código não
corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes
aos códigos de país e estado geralmente usados. Para apps criados após
fevereiro de 2020, o REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criados antes dessa data, o
ID da região é opcional no URL.
Saiba mais sobre IDs de região.
Defina as configurações do aplicativo App Engine no arquivo
app.yaml
.
Esse arquivo especifica como os caminhos do URL correspondem aos gerenciadores de solicitação e aos arquivos estáticos.
O arquivo app.yaml
também contém informações sobre o
código do aplicativo, como o ambiente de execução e o identificador da versão
mais recente.
Cada serviço do aplicativo
tem um arquivo app.yaml
próprio, que atua como descritor da
implantação. Primeiro, é necessário criar o arquivo app.yaml
do serviço default
antes de criar e implantar arquivos app.yaml
de outros serviços do aplicativo.
Estrutura do diretório
Para saber mais sobre como estruturar vários serviços no seu aplicativo, consulte Como estruturar serviços da Web no App Engine.Exemplo
Veja a seguir um exemplo de arquivo app.yaml
referente a um aplicativo 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 arquivo terminado em .py
, o que significa que o script usa CGI, ou um caminho do 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 (em inglês).
O formato YAML é compatível com comentários. As linhas iniciadas com o caractere de cerquilha (#
) são ignoradas:
# This is a comment.
Os padrões de caminho de URL e arquivo usam a sintaxe de expressões regulares estendidas POSIX, excluindo elementos e classes de compilação. São aceitas tanto as referências inversas às correspondências agrupadas (por exemplo, \1
) quanto as extensões Perl: \w \W \s \S \d \D
.
Elementos do ambiente de execução e do aplicativo
Elemento | Descrição |
---|---|
application |
A abordagem recomendada consiste em remover o elemento
Para mais informações sobre como usar esses comandos, consulte Como implantar seu app. O ID do aplicativo é o ID do projeto do console do Google Cloud que você especificou quando criou o aplicativo no console do Google Cloud. |
api_version |
Obrigatório. A versão da API no ambiente de execução específico usado pelo aplicativo. Este campo está obsoleto em ambientes de execução mais recentes do App Engine.
Quando o Google anunciar o suporte para uma nova versão da API do ambiente de execução, o aplicativo implantado continuará usando a versão para que ele foi escrito. Para atualizar o aplicativo para uma nova versão da API, altere esse valor e implante novamente o aplicativo no App Engine. Quando você especifica o valor
No momento, o App Engine tem uma versão do
ambiente de execução |
auto_id_policy |
Opcional. Se você estiver configurando identificadores de entidade automaticamente, poderá alterar o método empregado definindo a política de código automática. As opções a seguir são válidas:
|
builtins |
Opcional.
O SDK do Python 2 inclui vários gerenciadores integrados para funções de aplicativo comuns. A diretiva Este campo está obsoleto no ambiente de execução do Python 3. Os seguintes gerenciadores internos estão disponíveis para uso:
builtins: - deferred: on - appstats: on
A diretiva builtins: - name: on É equivalente a: includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
Quando você usa Por exemplo, considere o handlers: - url: /.* script: main.app builtins: - appstats: on A lista resultante de gerenciadores é: [/_ah/stats, /.*]
Se o includes: - included.yaml E o arquivo handlers: - url: /.* script: main.app builtins: - appstats: on A lista resultante de gerenciadores será: [/.*, /_ah/stats] A ordem de colocação da cláusula |
default_expiration |
Opcional. Define um período de cache padrão global para todos os gerenciadores de arquivos estáticos de um aplicativo. Você também pode configurar a duração de um cache para gerenciadores de arquivos 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 Expiração do cache. |
env_variables
|
Opcional.
Você pode definir variáveis de ambiente no arquivo
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 retornadas para diferentes tipos de erro. É possível que este elemento contenha:
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 de descrições de como eles precisam ser processados. O App Engine pode processar os URLs executando o código do aplicativo ou disponibilizando arquivos estáticos enviados 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 na seguinte ordem:
Se a diretiva
Os padrões de |
inbound_services |
Opcional.
Os aplicativos precisam ativar esses serviços antes de poder receber solicitações de entrada. Para ativar o serviço em um aplicativo Python 2, inclua uma seção Os seguintes serviços de entrada estão disponíveis:
inbound_services: - mail - warmup |
instance_class |
Opcional. A classe de instância deste serviço. Os seguintes valores estão disponíveis dependendo do escalonamento do serviço:
|
libraries |
Opcional.
O ambiente de execução do Python 2.7 inclui algumas bibliotecas de terceiros. Algumas estão disponíveis por padrão. Outras estão disponíveis apenas quando configuradas. Indique qual versão você quer usar
especificando os valores Este campo está obsoleto no ambiente de execução do Python 3. libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
Quando você especifica Se você está desenvolvendo um aplicativo que ainda não tem usuários: não é necessário rastrear novas versões. Mas se o aplicativo estiver sendo usado ativamente, cuidado. Talvez você se surpreenda ao constatar que ele começou a usar uma nova versão de biblioteca não compatível com versões anteriores. Para ver uma lista das bibliotecas de terceiros incluídas, consulte Bibliotecas de terceiros. É possível usar bibliotecas de terceiros puramente em Python instalando-as em um diretório local. Se você estiver usando o ambiente flexível, consulte Como usar bibliotecas do Python no ambiente flexível. |
module |
Observação: os módulos agora são denominados serviços. Para gerenciar seu app com a CLI gcloud, use o elemento service. |
runtime |
Obrigatório. Nome do ambiente de execução usado pelo aplicativo. Por exemplo, para especificar o Python 2.7, use: runtime: python27 |
service |
Os serviços antes eram conhecidos como módulos.
Compatível apenas com os plug-ins da CLI gcloud ou
baseados na CLI gcloud, por exemplo:
Obrigatório ao criar um serviço.
Opcional para o serviço service: service-name
Observação: 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 exclui arquivos de backup Emacs com nomes nos formatos
Para ampliar a lista de expressões regulares acima, copie e cole essa lista no 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 o aplicativo para usar solicitações simultâneas. Se você estiver usando
a biblioteca de linhas de execução
do Python, os
dados locais da linha de execução, conforme retornados por Este campo está obsoleto no ambiente de execução do Python 3. threadsafe: [true | false]
Observação: a diretiva |
version |
A abordagem recomendada consiste em remover o elemento
Para mais informações sobre como usar esse comando, consulte Como implantar o aplicativo. Um identificador da versão do código do aplicativo que você implanta no App Engine.
O código da versão pode conter letras minúsculas, dígitos e hifens. Ele não pode começar com o prefixo
Observação: os nomes das versões têm que começar com uma letra, para distingui-las
de instâncias numéricas que são sempre especificadas por um número. Isso
evita a ambiguidade com URLs como
Cada versão de um aplicativo retém sua própria cópia do
|
vpc_access_connector |
Opcional. Configura o aplicativo para usar um conector de acesso VPC sem servidor, permitindo o envio de solicitações para recursos internos na rede VPC. Para mais informações, consulte Como se conectar 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
é obrigatório no arquivo de configuração app.yaml
. Ele contém uma lista de padrões de URL e descrições de como eles serão processados. O App Engine pode processar URLs executando o código do aplicativo ou exibindo arquivos estáticos enviados com o código, como imagens, CSS ou JavaScript.
Os padrões são avaliados na ordem em que aparecem no arquivo app.yaml
, de cima para baixo. O primeiro mapeamento com padrão que corresponde ao URL é usado para processar a solicitação.
A tabela a seguir lista os subelementos do elemento handlers
que controlam o comportamento de scripts arquivos estáticos, diretórios estáticos e outras configurações.
Elemento | Descrição |
---|---|
application_readable |
Opcional. Booleano. Por padrão, os arquivos declarados em gerenciadores de arquivos estáticos são enviados como dados estáticos e são exibidos somente para usuários finais. Eles não podem ser lidos no aplicativo. Se este campo for definido como verdadeiro, os arquivos também serão enviados como dados de código para que possam ser lidos no aplicativo.
Ambos os uploads são cobrados de acordo com o código e as cotas de recursos de armazenamento de dados estáticos.
Este campo está obsoleto em ambientes de execução mais recentes do App Engine. |
expiration
|
Opcional.
É recomendável que a duração de um arquivo estático exibido por este gerenciador seja armazenada em cache por proxies e navegadores da Web. O valor é uma sequência 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 do cache para quatro dias e cinco horas após o arquivo ser solicitado pela primeira vez. Se omitido, o default_expiration do aplicativo é usado. Consulte Expiração do
cache para mais detalhes.
|
http_headers |
Opcional. Defina cabeçalhos HTTP para ver respostas dos gerenciadores de diretório ou arquivo estático. Se você precisar definir cabeçalhos HTTP nos gerenciadores de handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... Suporte ao CORSEste recurso é importante para permitir o compartilhamento de recursos entre origens (CORS, na sigla em inglês), como o acesso aos arquivos hospedados por outro aplicativo do App Engine.
Por exemplo, um aplicativo de jogo Para que o gerenciador de arquivo estático retorne esse valor de cabeçalho de resposta solicitado, realize as ações a seguir: handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ...
Observação: para permitir que todos acessem os recursos, use o caractere curinga |
mime_type |
Opcional. Se especificado, todos os arquivos exibidos por este gerenciador serão exibidos usando o tipo MIME especificado. Se não especificado, o tipo MIME de um arquivo será derivado da extensão do nome do arquivo. Se for feito upload do mesmo arquivo com várias extensões, a extensão resultante poderá depender da ordem em que os uploads ocorreram. Para mais informações sobre os possíveis tipos de mídia MIME, consulte o site sobre os tipos de mídia IANA MIME (em inglês) |
redirect_http_response_code |
Opcional.
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always redirect_http_response_code: 301
Quando a solicitação de um usuário for redirecionada, o código de status HTTP será definido com o valor do parâmetro |
script |
Opcional. Especifica o caminho para o script a partir do diretório raiz do aplicativo: 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
Observação: assim como no caso de uma instrução Nos ambientes de execução mais recentes do App Engine, o comportamento desse campo mudou. |
secure |
Opcional. Qualquer gerenciador de URL pode usar a configuração secure , incluindo gerenciadores de script e de arquivos estáticos. É possível que o elemento secure tenha os seguintes valores:
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always
O servidor da Web de desenvolvimento não é compatível com conexões HTTPS. Ele
ignora o parâmetro
Para direcionar uma versão específica do aplicativo usando o domínio Para usar domínios personalizados com HTTPS, primeiro é preciso ativar e configurar certificados SSL para esse domínio. O login e o logout das contas do Google sempre são realizados por meio de uma conexão segura, sem relação com a configuração dos URLs do aplicativo. |
static_dir
|
Opcional. O caminho para o diretório que contém os arquivos estáticos, do diretório raiz do aplicativo. Tudo depois do fim do padrão
Cada arquivo no diretório estático é exibido pelo MIME que corresponde à própria extensão de nome de arquivo, a menos que seja modificado pela configuração
Todos os arquivos neste diretório são carregados com seu aplicativo como arquivos estáticos. No App Engine, os arquivos estáticos são armazenados e exibidos separadamente dos arquivos do aplicativo. Por padrão, os arquivos estáticos não estão disponíveis no sistema de arquivos do app. Para alterar essa configuração, defina 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 gerenciador de padrão de arquivo estático associa um padrão de URL com caminhos para arquivos estáticos enviados com o aplicativo. A expressão regular do padrão de URL pode definir os agrupamentos de expressões regulares a serem usados na construção do caminho do arquivo. Use isso 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 veicula arquivos estáticos separadamente dos arquivos do aplicativo. Por padrão, os arquivos estáticos não estão disponíveis no sistema de arquivos do aplicativo. Para alterar essa configuração, defina a opção Os arquivos estáticos não podem ser iguais aos arquivos do código do aplicativo. Se um caminho de arquivo estático corresponder ao caminho para um script usado em um gerenciador dinâmico, o script não ficará disponível para o gerenciador dinâmico. |
upload |
Opcional. Uma expressão regular que corresponde aos caminhos de arquivo para todos os arquivos que serão referenciados por este gerenciador. Isso é necessário porque o gerenciador não pode determinar quais arquivos no diretório do aplicativo correspondem aos padrões de |
url |
Elemento obrigatório em O padrão do URL tem algumas diferenças de comportamento quando usado com os seguintes elementos:
|
Como escalonar elementos
Os elementos da tabela a seguir configuram o escalonamento do seu aplicativo. Para saber mais sobre como os aplicativos do App Engine são escalonados, consulte Tipos de escalonamento.
Elemento | Descrição |
---|---|
automatic_scaling |
Opcional. Aplicável somente a aplicativos que usam uma classe de instância de F1 ou superior. Especifique esse elemento para alterar as configurações padrão do escalonamento automático, como a definição de níveis mínimo e máximo para o número de instâncias, latência e conexões simultâneas de um serviço. É possível que este elemento contenha:
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 |
É necessário que os aplicativos que usarem uma classe de instância de B1 ou superior especifiquem esse elemento ou Esse elemento ativa o escalonamento básico das classes de instância B1 e superior e pode conter os seguintes elementos:
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
É necessário que os aplicativos que usarem uma classe de instância de B1 ou superior especifiquem esse elemento ou Esse elemento permite o escalonamento manual de classes de instância B1 e superior e pode conter o seguinte elemento:
manual_scaling: instances: 5 |