Resolva problemas de implementação no App Engine

Vários fatores podem causar erros de implementação no App Engine, incluindo autorizações em falta, alterações às políticas da organização e problemas na configuração da sua app.

Esta página descreve os seguintes erros de implementação comuns no App Engine e métodos para os resolver:

Erros de autorização

Esta secção descreve os erros que podem ocorrer quando implementa a sua app devido a autorizações de conta em falta ou alterações às políticas da organização.

Para identificar a conta ativa que usa para aceder à Google Cloud CLI e a outras ferramentas na Google Cloud plataforma, faça uma das seguintes ações:

  • Se usou a CLI do Google Cloud para a implementação, execute o comando gcloud auth list.

  • Se fez a implementação a partir de um IDE, veja as definições do plug-in Cloud Tools.

Para saber por que motivo a atribuição apenas da função App Engine Deployer (roles/appengine.deployer) pode não ser suficiente em alguns casos, consulte o artigo Funções do App Engine.

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

A implementação falha para novos projetos

Pode ver o seguinte erro quando implementar a sua app pela primeira vez num novo projeto:

ERROR: (gcloud.app.deploy) Error Response: [13] Failed to create cloud build: com.google.net.rpc3.client.RpcClientException:..........invalid bucket "staging.PROJECT_ID.appspot.com"; service account PROJECT_ID@appspot.gserviceaccount.com does not have access to the bucket

Para resolver este problema, conceda a função Administrador de armazenamento (roles/storage.admin) à conta de serviço predefinida. Para mais informações, consulte o artigo Armazene registos de compilação num contentor criado pelo utilizador.

Se já tiver concedido a função de administrador de armazenamento, juntamente com as outras funções necessárias com base nos diferentes erros de autorização que encontra durante a implementação, e ainda não conseguir implementar a sua app, tal pode dever-se às seguintes alterações às políticas da organização:

  • Desde maio de 2024,o Google Cloud aplica políticas da organização seguras por predefinição a todos os recursos da organização. Google Cloud Esta política impede o App Engine de conceder a função Editor às contas de serviço predefinidas do App Engine.

  • Em junho de 2024, o Cloud Build alterou o comportamento predefinido da forma como o Cloud Build usa as contas de serviço em novos projetos. Isto está detalhado no artigo Alteração da conta de serviço do Cloud Build. Como resultado desta alteração, os novos projetos que implementam versões pela primeira vez podem estar a usar a conta de serviço do App Engine predefinida com autorizações insuficientes para implementar versões.

Para resolver este problema, faça o seguinte:

O autor da chamada não tem autorização para aceder ao projeto

O seguinte erro ocorre se a conta de serviço não tiver autorização para implementar apps no projeto atual:

User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist).

Para resolver este problema, conceda a função Implementador do App Engine (roles/appengine.deployer) à conta de serviço.

Falha ao obter metadados do registo

O seguinte erro ocorre se usar o comando gcloud app deploy a partir de uma conta de serviço que não tenha a função Administrador de armazenamento (roles/storage.admin):

Failed to fetch metadata from the registry, with reason: generic::permission_denied

Para resolver este problema, atribua a função de administrador de armazenamento à conta de serviço.

As contas de serviço têm de ter autorizações na imagem

Ocorre o seguinte erro quando implementa a sua app:

The App Engine appspot and App Engine flexible environment service accounts must
have permissions on the image IMAGE_NAME

Este erro ocorre devido a um dos seguintes motivos:

  • A conta de serviço predefinida do App Engine não tem a função Visualizador de objetos do armazenamento (roles/storage.objectViewer).

    Para resolver este problema, conceda a função Storage Object Viewer à conta de serviço.

  • O seu projeto tem um perímetro de serviço dos VPC Service Controls que limita o acesso à API Cloud Storage através de níveis de acesso.

    Para resolver este problema, adicione a conta de serviço que usa para implementar a sua app ao perímetro de serviço dos VPC Service Controls correspondente accessPolicies.

  • Após 15 de maio de 2024, o Artifact Registry aloja imagens para o domínio gcr.io nos Google Cloud projetos sem utilização anterior do Container Registry. Se implementar uma aplicação existente num novo projeto criado após esta data, a conta de serviço pode não ter as autorizações necessárias para implementar a app. Para conceder as autorizações necessárias, consulte o artigo Implementação no App Engine.

Falha ao criar o Cloud Build

O seguinte erro ocorre se usar o comando gcloud app deploy a partir de uma conta de serviço que não tenha a função de Editor do Cloud Build (roles/cloudbuild.builds.editor).

Failed to create cloud build: Permission denied

Para resolver este problema, conceda a função de editor do Cloud Build à conta de serviço.

Erro ao obter a aplicação

O seguinte erro ocorre quando a conta de serviço que usou para implementar a sua app não tem a função de implementador do App Engine.

Permissions error fetching application apps/app_name. Please make sure you are using the correct project ID and that you have permission to view applications on the project.

If you are running Google Cloud CLI version 328 or later, the following error occurs
when you deploy your app:

make sure that you have permission to view applications on the project and that
SERVICE_ACCOUNT has the App Engine Deployer (roles/appengine.deployer) role.

Para resolver este problema, conceda a função App Engine Deployer à conta de serviço que usou para implementar a sua app.

Erro ao implementar um serviço com um conetor do Acesso a VPC sem servidor

O seguinte erro ocorre quando o utilizador ou a conta de serviço que está a tentar implementar a app com um conetor do Acesso a VPC sem servidor não tem as autorizações necessárias:

Please ensure you have [compute.globalOperations.get] on the service project

Para resolver este problema, certifique-se de que o utilizador ou a conta de serviço usada para a implementação tem as funções Utilizador do acesso a VPC sem servidor e IAM do leitor de computação.

Erros de implementação comuns

Esta secção descreve as estratégias de resolução de problemas para erros de configuração na sua app ou projeto.

Erro de valor inválido ao implementar numa configuração de VPC partilhada

O seguinte erro é apresentado no Cloud Logging para instâncias de VM flexíveis quando implementa a sua app:

Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate
tags are not allowed: aef-instance on compute.instances.insert

Este é um problema conhecido em que a definição do elemento instance_tag no ficheiro app.yaml resulta em erros ao criar instâncias.

Para resolver o problema, remova o campo instance_tag do ficheiro app.yaml e implemente novamente.

Exceder o limite de instâncias máximas

Ocorre o seguinte erro quando implementa a sua app:

You may not have more than 'xx' total max instances in your project.

Existe um limite para o número máximo de instâncias que pode criar por projeto. As solicitações para criar instâncias adicionais falham se exceder este limite.

Para resolver este problema, defina o valor de max_instances no seu ficheiro app.yaml para um valor inferior a este limite ou elimine alguns serviços ou versões para que a soma de max_instances fique dentro do limite.

A compilação durante a implementação falha sem erros nos registos

Ocorre o seguinte erro quando implementa a sua app:

ERROR: (gcloud.app.deploy) Cloud build failed. Check logs at https://console.cloud.google.com/cloud-build/builds/BUILD_ID?project=PROJECT_NUMBER Failure status: UNKNOWN: Error Response: [2] Build failed; check build logs for details

Se clicar no link na mensagem de erro e verificar que todos os passos de compilação foram bem-sucedidos, mas a compilação da app continua a falhar, tal pode dever-se a um dos seguintes motivos:

Para resolver este problema, altere as seguintes definições do seu contentor:

A compilação falha ao executar uma aplicação Node.js

As falhas de compilação podem ocorrer quando implementa uma aplicação Node.js.

Por predefinição, o tempo de execução do Node.js executa npm run build se for detetado um script de compilação no ficheiro package.json. Isto pode causar comportamentos inesperados, como compilações de longa duração ou erros de falta de memória.

Para resolver este problema, especifique NODE_ENV=development no ficheiro app.yaml para garantir que a execução tem todas as dependências necessárias.

Apesar do erro, pode forçar a produção especificando NODE_ENV: 'production' em build-env-variables no seu ficheiro app.yaml:

  build_env_variables:
    NODE_ENV: 'production'

Para mais informações, consulte o artigo Executar passos de compilação personalizados durante a implementação.