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 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
O exemplo acima vai publicar ficheiros com a extensão gif
, png
ou jpg
como recursos estáticos. Os ficheiros foram configurados para serem legíveis pelo código da aplicação em tempo de execução.
O exemplo também publica todos os scripts PHP. Pode restringir o controlador de scripts
a scripts de nível raiz através da expressão url: /([^/]+\.php)
. As aplicações existentes podem achar útil simular o encaminhamento $_GET['q']
Apache mod_rewrite.
Abaixo, encontra uma configuração app.yaml
mais 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
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:
|
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: php55 api_version: 1 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
env_variables: MY_VAR: "my value" MY_VAR e my value são o nome e o
valor da variável de ambiente que quer definir, e cada
entrada da variável de ambiente tem uma indentação de dois espaços abaixo do
elemento env_variables . As variáveis de ambiente às quais não é atribuído um valor têm como predefinição "None" .
Em seguida, pode obter o valor destas variáveis através de echo getenv('MY_VAR'); echo $_SERVER['MY_VAR']; |
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. |
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 PHP 5
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:
|
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 PHP 5, use: runtime: php55 |
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/ |
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
|
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.php 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: - url: /profile/(.*)/(.*) script: /employee/\2/\1.php # specify a script 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.php 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 |