Implemente a sua app para a carregar e executar no App Engine. Quando implementa as suas apps, cria versões dessas apps e os respetivos serviços no App Engine. Pode implementar apps completas, incluindo todo o código fonte e os ficheiros de configuração, ou pode implementar e atualizar versões individuais ou ficheiros de configuração.
Para implementar as suas apps programaticamente, use a API Admin.
Antes de começar
Antes de poder implementar a sua app:
O proprietário do projeto tem de criar a aplicação do App Engine. Google Cloud
Certifique-se de que a sua conta de utilizador inclui os privilégios necessários.
Conceda autorização ao Cloud Build para implementar apps no seu projeto. Quando implementa a sua app, o App Engine usa o Cloud Build para criar a app num contentor e implementar o contentor no tempo de execução na região da app. O Cloud Build não tem autorização para implementar apps Java 8 por predefinição, pelo que tem de conceder autorização antes de poder implementar apps.
Configurar a ferramenta de compilação Maven (recomendado)
Para implementar a sua app através da ferramenta de compilação Maven, tem de configurar o seu projeto para usar o plug-in Maven para o App Engine.
- Instale a CLI gcloud, o componente
app-engine-java
e inicie sessão. - Compile e crie o seu projeto com o plug-in Maven
Instalar a CLI gcloud
Para implementar a sua app com a CLI gcloud, tem de transferir, instalar e inicializar a CLI gcloud.
Se já tiver a CLI gcloud instalada e quiser configurá-la para usar um ID do projeto diferente do ID com o qual a inicializou, consulte o artigo Gerir configurações da CLI gcloud. Google Cloud
Usar um proxy
Se estiver a executar o comando de implementação a partir de um sistema que usa um proxy HTTP ou HTTPS, tem de configurar a ferramenta para que possa comunicar através do proxy.
Execute os seguintes comandos para configurar a CLI gcloud:
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
Também pode definir um username
e um password
para o proxy. Para mais
informações, consulte gcloud config.
Implementar uma app
Para implementar a sua app no App Engine, use a ferramenta de compilação Maven (recomendada) ou o comando gcloud app deploy
a partir do diretório raiz da sua aplicação.
Usar o Maven (recomendado)
Para implementar a sua app com a ferramenta de compilação Maven, execute o seguinte comando a partir do diretório de nível superior do seu projeto, onde se encontra o ficheiro pom.xml
:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do seu Google Cloud projeto. Se o seu ficheiro pom.xml
já
especificar o seu
ID do projeto, não precisa de incluir a propriedade -Dapp.deploy.projectId
no
comando que executar.
Usar a linha de comandos gcloud
gcloud app deploy [CONFIGURATION_FILES]
Substitua [CONFIGURATION_FILES]
pelo caminho para um ou mais ficheiros de configuração.
Use um único espaço em branco para separar os nomes dos caminhos.
Sinalizadores opcionais:
--version
: especifica um ID da versão personalizado. Se não especificar um ID da versão, o App Engine gera um.--no-promote
: implementa a sua app sem encaminhar automaticamente todo o tráfego para essa versão. Por predefinição, cada versão que implementar é configurada automaticamente para receber 100% do tráfego.--project
: Especifica um ID do projeto Google Cloud alternativo ao que inicializou como predefinição na CLI gcloud.
Para mais informações, consulte a gcloud app deploy
referência
ou execute gcloud help
a partir da linha de comandos.
Escolher IDs de versão únicos
Para instâncias dimensionadas manualmente, o ID da sua versão deve começar por uma letra para as distinguir dos IDs de instâncias numéricos. Isto garante que os pedidos são encaminhados para o destino correto e evita a ambiguidade com padrões de URL, como123-dot-my-service.[REGION_ID].r.appspot.com
, que podem ser interpretados de duas formas:
- Se a versão
123
existir, o pedido é encaminhado para a versão123
do serviçomy-service
. - Se a versão
123
não existir, o pedido é encaminhado para o ID da instância123
, onde as versões do serviçomy-service
estão em execução.
Pode dar o nome que quiser às suas versões para instâncias configuradas para o escalamento automático ou o escalamento básico porque a segmentação dessas instâncias não é suportada.
Implementação de várias aplicações de serviços
Quando a sua aplicação é incluída em vários serviços, pode implementar e atualizar serviços segmentados individualmente ou todos os serviços em simultâneo. A implementação de atualizações aos serviços pode incluir a atualização de ficheiros de configuração individuais ou a atualização do código-fonte nas versões correspondentes.
Por exemplo, pode implementar e criar duas versões no App Engine, em que cada versão é executada no seu próprio serviço. A primeira versão funciona como o serviço de frontend e a outra como o backend da sua app. Em seguida, pode implementar ficheiros de configuração individuais para atualizar apenas as definições de um serviço. Também pode optar por implementar uma nova versão num serviço para atualizar o código fonte do front-end, do back-end ou de ambos em simultâneo.
Requisitos para vários serviços
Use os mesmos comandos de implementação para implementar e atualizar os vários serviços da sua aplicação com os seguintes requisitos:
Inicialmente, tem de implementar uma versão da sua app no serviço
default
antes de poder criar e implementar serviços subsequentes.Tem de especificar o ID do seu serviço no ficheiro de configuração
appengine-web.xml
da versão correspondente. Para especificar o ID do serviço, inclui a definição do elementomodule: [YOUR_SERVICE_ID]
em cada ficheiro de configuração. Por predefinição, a exclusão desta definição de elemento do ficheiro de configuração implementa a versão no serviçodefault
.Tem de especificar todos os ficheiros de configuração
appengine-web.xml
correspondentes no comando de implementação para implementar vários serviços em simultâneo. O serviçodefault
tem de ser apresentado primeiro.
Para implementar vários serviços
A partir do diretório raiz da aplicação onde os ficheiros de configuração estão
localizados, execute o comando de implementação e especifique os caminhos relativos e os nomes
dos ficheiros para o ficheiro appengine-web.xml
de cada serviço.
Usar a ferramenta de compilação Maven
Se o diretório raiz do seu projeto contiver apenas os seus serviços, pode implementar todos esses serviços com um único comando Maven.
O comando de implementação do Maven itera através de cada um dos serviços do seu projeto para localizar os respetivos ficheiros de configuração e, em seguida, implementar cada serviço.
Para implementar vários serviços através do plug-in do Maven:
- Certifique-se de que appengine-maven-plugin foi adicionado ao ficheiro
pom.xml
principal. Execute o seguinte comando:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do seu Google Cloud projeto. Se o seu ficheiro
pom.xml
já especificar o seu ID do projeto, não precisa de incluir a propriedade-Dapp.deploy.projectId
no comando que executar.
Usar o gcloud
gcloud app deploy [CONFIGURATION_FILES]
Substitua [CONFIGURATION_FILES]
pelo caminho para um ou mais ficheiros de configuração.
Use um único espaço em branco para separar os nomes dos caminhos.
Recebe a validação através da linha de comandos à medida que cada serviço é implementado com êxito.
Ver registos de compilação
O Cloud Build transmite registos de compilação e implementação que são visíveis na secção Histórico do Cloud Build da Google Cloud consola. Para ver compilações na região da app, use o menu pendente Região na parte superior da página para escolher a região pela qual quer filtrar.
A atualizar índices
Para criar ou atualizar os índices que as suas apps usam, carregue o
datastore-indexes.xml
ficheiro de configuração para o Datastore. Os índices que ainda não existirem são criados depois de o ficheiro de configuração ser carregado.
O Datastore pode demorar algum tempo a criar todos os índices e, por isso, esses índices não ficam imediatamente disponíveis para o App Engine. Se a sua app já estiver configurada para receber tráfego, podem ocorrer exceções para consultas que exijam um índice que ainda esteja em processo de criação.
Para evitar exceções, tem de aguardar que todos os índices sejam criados. Por exemplo:
Carregue o ficheiro de configuração para o Datastore antes de implementar a sua versão:
index.xml
Carregue o ficheiro para o Datastore:
index.xml
Para mais informações, consulte a referênciagcloud datastore indexes create index.yaml
gcloud datastore
.Use a Google Cloud consola para monitorizar o estado de todos os seus índices:
Depois de criar todos os índices, implemente a nova versão no App Engine.
Crie os seus índices antes de migrar ou dividir o tráfego para a sua versão:
-
Defina um novo ID da versão no ficheiro
appengine-web.xml
da sua app. - Implemente a nova versão.
- Use a Google Cloud consola para monitorizar o estado de todos os seus índices:
- Depois de criar todos os seus índices, use a Google Cloud consola para migrar ou dividir o tráfego para a sua versão:
-
Defina um novo ID da versão no ficheiro
Para mais informações sobre os índices, consulte o artigo Configurar índices do Datastore.
Resolução de problemas
Seguem-se mensagens de erro comuns que pode encontrar:
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. Command not found
- Consulte o artigo Usar o servidor de desenvolvimento local para ver instruções sobre como configurar a ferramenta de servidor de desenvolvimento local.
Import Error
- Se instalou a CLI gcloud e o SDK do App Engine original, as entradas no seu PATH podem entrar em conflito entre si e causar erros de importação. Se recebeu erros ao executar comandos da CLI gcloud, siga as instruções para executar o servidor de desenvolvimento local.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
- Antes de poder implementar e criar os vários serviços da sua aplicação, tem de implementar e criar primeiro o
default
serviço. Para ver detalhes sobre como implementar uma versão no serviçodefault
, consulte o artigo Implementar várias aplicações de serviço. Too Many Versions (403)
- O App Engine tem um limite no número de versões implementadas da sua aplicação. Estas diferem para aplicações gratuitas e aplicações implementadas.
Pode usar a Google Cloud consola
para eliminar uma versão mais antiga e, em seguida, carregar o código mais recente.
You do not have permission to modify this app (403)
- Isto pode ocorrer quando a conta na qual tem autenticação não tem permissão para implementar no ID da aplicação especificado no comando ou no seu
appengine-web.xml
. Verifique se o ID da aplicação está correto e corresponde ao valor do ID do projeto. Google Cloud console Em seguida, verifique as autorizações do projeto na consola e confirme que a sua conta está listada com um nível de autorização suficiente para permitir a implementação de apps. [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 a sua aplicação é criada. Este contentor é necessário para armazenar o conteúdo da sua aplicação. Este erro é devolvido quando não é possível criar este contentor nos seguintes cenários:
A conta de serviço do App Engine predefinida não está presente no seu projeto. Se a sua conta foi removida antes de decorridos 30 dias desde a eliminação, pode restaurá-la.
O seu projeto está numa organização que aplica a política
constraints/gcp.resourceLocations
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 em várias regiões na mesma região onde a sua app do App Engine foi criada.
[13] An internal error occurred
Este erro pode ocorrer se o ficheiro de configuração do App Engine contiver um recurso
name
inválido na chavevpc_access_connector
.app.yaml
Certifique-se de que oname
campo contém o projeto e a região corretos onde o conetor de acesso à VPC sem servidor é criado.Se o problema persistir depois de garantir que a sua configuração
app.yaml
é válida, use o Google Cloud SDK para voltar a implementar o seu serviço, adicionando a--verbosity=debug
flag e contacte o apoio técnico da nuvem fornecendo o resultado do comando.- Outro erro de implementação
Se a implementação falhar, certifique-se de que a API Cloud Build está ativada no seu projeto. O App Engine ativa esta API automaticamente na primeira vez que implementa uma app, mas se alguém tiver desativado a API desde então, as implementações falham.
O que se segue?
- Use serviços para criar uma aplicação grande.
- Dividir tráfego ou migrar tráfego para encaminhar tráfego para as versões que implementar.
- Reveja os
gcloud app deploy
argumentos da linha de comandos e as flags.