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.
Saiba como executar a sua aplicação localmente, implementá-la e testá-la no App Engine.
Executar localmente
Para testar a sua aplicação antes da implementação, execute-a no ambiente local com as ferramentas de desenvolvimento que usa habitualmente.
Implemente a sua aplicação
Implemente a sua aplicação no App Engine através do comandogcloud app deploy
.
O serviço Cloud Build cria automaticamente a sua implementação numa imagem de contentor e implementa a imagem no ambiente flexível do App Engine. O contentor inclui todas as modificações locais que fez à imagem de tempo de execução.
Para implementar as suas apps programaticamente, use a API Admin.
Antes de começar
Antes de poder implementar a sua aplicação:
O proprietário do projeto tem de configurar o projeto Google Cloud para o App Engine. Google Cloud
Certifique-se de que a sua conta de utilizador inclui os privilégios necessários.
Implemente um serviço
Implementa a sua aplicação no App Engine implementando versões dos serviços da sua aplicação e cada um dos respetivos ficheiros de configuração.
Pode implementar os outros ficheiros de configuração do seu serviço segmentando e implementando cada ficheiro em separado, por exemplo:
gcloud app deploy cron.yaml gcloud app deploy dispatch.yaml gcloud app deploy index.yaml
Para especificar um ID da versão personalizado, use a flag
--version
.Para impedir que o tráfego seja encaminhado automaticamente para a nova versão, use a flag
--no-promote
.Para implementar num Google Cloud projeto
--project
específico, use a flag--project
.
Por exemplo, para implementar o serviço definido pelo ficheiro app.yaml
num projeto específico, atribua ao serviço um ID de versão personalizado e impeça o encaminhamento do tráfego para a nova versão:Google Cloud
gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote
Para mais informações, consulte a gcloud app deploy
referência.
Pode definir propriedades
para a CLI gcloud e criar e gerir
configurações do SDK
para não ter de especificar flags como --project
sempre que implementar.
Ignore ficheiros
Pode usar um ficheiro .gcloudignore
para especificar ficheiros e diretórios que não devem ser carregados para Google Cloud
quando implementa os seus serviços. Isto é útil para ignorar artefactos de compilação e outros ficheiros que não precisam de ser carregados com a sua implementação.
Saiba mais sobre a sintaxe do ficheiro .gcloudignore
na
gcloud
referência.
Crie manualmente um contentor para implementação
Para criar as imagens de contentor fora do Google Cloud:
- Carregue as suas imagens para um repositório do Artifact Registry. Para mais informações, consulte o artigo Envie e receba imagens.
- Implemente no App Engine com o comando
gcloud app deploy
.
Por exemplo, se criar as imagens de contentores localmente com o Docker, pode
enviar essas imagens para o Artifact Registry
e especificar o URL da imagem na flag --image-url
do comando:
gcloud app deploy --image-url LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
Substituição:
LOCATION com a localização do repositório onde a imagem está armazenada.
PROJECT-ID com o seu Google Cloud ID do projeto.
REPOSITORY com o nome do repositório onde a imagem está armazenada.
IMAGE com o nome da imagem do contentor.
Use pipelines de implementação contínua automatizados
Pode usar o Cloud Build para automatizar implementações em pipelines de implementação contínua. Para mais informações, consulte os artigos Implementação no App Engine e Crie e faça a gestão de acionadores de compilação na documentação do Cloud Build.
Imagens base do Docker
Se quiser criar uma aplicação de tempo de execução personalizada, consulte o artigo Crie um ficheiro Docker.
Veja a sua candidatura
Depois de implementar a aplicação no App Engine, pode executar o seguinte comando para iniciar o navegador e vê-la em https://PROJECT_ID.REGION_ID.r.appspot.com
:
gcloud app browse
Teste no App Engine
Antes de configurar uma nova versão para receber tráfego, pode testá-la no
App Engine. Por exemplo, para testar uma nova versão do seu serviço default
:
Implemente a nova versão e inclua a flag
--no-promote
:gcloud app deploy --no-promote
Aceda à nova versão navegando para o seguinte URL:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
Agora, pode testar a nova versão no ambiente de tempo de execução do App Engine. Pode depurar a sua aplicação vendo os respetivos registos noGoogle Cloud Explorador de registosda consola. Para mais informações, consulte o artigo Escrever registos de aplicações.
Os pedidos enviados para
https://PROJECT_ID.REGION_ID.r.appspot.com
continuam a ser encaminhados para a versão configurada anteriormente para receber tráfego.Quando quiser enviar tráfego para a nova versão, use a Google Cloud consola para migrar o tráfego:
Selecione a versão que acabou de implementar e clique em Migrar tráfego.
Pode usar o mesmo processo para testar novas versões de outros serviços
substituindo default
no URL pelo nome do seu serviço:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
Para mais informações sobre a segmentação de serviços e versões específicos, consulte o artigo Como os pedidos são encaminhados.
Use variáveis de ambiente de compilação
Pode definir variáveis de ambiente de compilação para tempos de execução que suportam buildpacks.
As variáveis de ambiente de compilação são pares de chave-valor que pode especificar para configurar o buildpack que usa para implementar a sua app. Por exemplo, pode querer especificar opções do compilador.
Antes de começar:
- As chaves têm de começar com uma letra ASCII em maiúsculas e podem incluir letras ASCII em maiúsculas, dígitos e sublinhados.
- Deve evitar criar variáveis com um prefixo de chave
GOOGLE_*
. - As seguintes chaves estão reservadas para utilização pela Google:
GOOGLE_RUNTIME
GOOGLE_RUNTIME_VERSION
GOOGLE_ENTRYPOINT
GOOGLE_DEVMODE
- Pode usar qualquer chave suportada por buildpacks.
Para usar variáveis de ambiente com buildpacks, especifique o campo
build_env_variables
no ficheiro app.yaml
.
Saiba mais acerca dos buildpacks.
Use o Cloud Trace
O Cloud Trace é útil para compreender como os pedidos se propagam através da sua aplicação. Pode inspecionar informações detalhadas de latência para um único pedido ou ver a latência agregada para toda a sua aplicação.
Pode ver os detalhes do rastreio. No Explorador de rastreios, pode filtrar por um serviço e uma versão específicos do App Engine.
Resolver problemas
Seguem-se mensagens de erro comuns que pode encontrar quando implementa apps:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Se o Google Cloud projeto não incluir a aplicação
App Engine
necessária, o comando
gcloud app deploy
pode falhar quando tenta executar o comandogcloud app create
. Apenas as contas com a função Proprietário têm as autorizações necessárias para criar aplicações do App Engine. 502 Bad Gateway
- O Google Cloud projeto pode não ser iniciado se o
app.yaml
estiver configurado incorretamente. Verifique os registos da app para ver mensagens de erro mais detalhadas. [13] An internal error occurred while creating a Cloud Storage bucket.
O App Engine cria um contentor multirregional do Cloud Storage predefinido em seu nome na mesma região onde cria a sua aplicação. Requer que este contentor armazene o conteúdo da sua aplicação. O erro é devolvido quando não é possível criar este contentor, como nos seguintes cenários:
O agente de serviço do ambiente flexível do App Engine não está presente no seu projeto ou não tem a função
App Engine flexible environment Service Agent
. Pode adicionar novamente a conta de serviço do agente ao seu projeto concedendo-lhe as autorizações de IAM corretas. Consulte o artigo Restaure um agente de serviço eliminado.A conta de serviço predefinida do App Engine não está presente no seu projeto. Se a conta de serviço do App Engine tiver sido removida antes de decorridos 30 dias desde a respetiva eliminação, pode restaurá-la.
O seu projeto está numa organização que aplica a
constraints/gcp.resourceLocations
política e a organização não permite a criação de recursos na mesma região onde o App Engine foi criado. Tem de substituir a políticaconstraints/gcp.resourceLocations
aplicada para o seu projeto e permitir as localizações de várias regiões na mesma região onde a sua app do App Engine é criada.
Por exemplo, se a sua app do App Engine for criada na região
europe-west
, mesmo que a região seja mapeada para as localizaçõeseurope-west1
, tem de modificar a restrição para permitir recursos emin:eu-locations
, que inclui todas as regiõesEU
. Isto é necessário porque os contentores criados pelo App Engine são multirregionais. Se a sua app do App Engine for criada na regiãoUS
, tem de permitirin:us-locations
. Se a sua app for criada nas regiõesASIA
, tem de permitirin:asia-locations
.[13] An internal error occurred.
Este erro pode ocorrer se estiver a implementar o seu serviço com uma configuração de rede que usa uma configuração de VPC partilhada. Experimente o seguinte:
- Certifique-se de que a configuração do
app.yaml
é válida. - Certifique-se de que o ambiente flexível do App Engine cumpre todos os requisitos para uma configuração de VPC partilhada. Consulte o artigo Usar o ambiente flexível do App Engine numa rede VPC partilhada.
- Certifique-se de que tem contas de serviço configuradas no seu projeto. Caso contrário, tem de restaurar as contas. A região da sub-rede no projeto anfitrião da VPC partilhada tem de corresponder à localização onde o ambiente do App Engine foi criado.
- Certifique-se de que a configuração do
Se o problema persistir, volte a implementar o serviço através do SDK do Google Cloud. Certifique-se de que adiciona a flag
--verbosity=debug
. Contacte o Google Cloud apoio técnico e faculte o resultado do comando.IP space of {USER_SUBNETWORK_NAME} is exhausted and needs to be expanded.
Se a implementação falhar com esta mensagem de erro, significa que a rede configurada para o serviço do App Engine não tem endereços disponíveis para alocar às novas instâncias do serviço. Para resolver o problema, expanda os intervalos de VPC na sub-rede configurada para o seu serviço do ambiente flexível do App Engine.