Implante o aplicativo para fazer upload e executar no App Engine. Ao implantar aplicativos, é possível criar versões deles e dos serviços correspondentes no App Engine. É possível implantar aplicativos inteiros, inclusive todos os arquivos de configuração e todo o código-fonte. Além disso, é possível implantar e atualizar versões individuais ou arquivos de configuração.
Para implantar os aplicativos de maneira programática, use a API Admin.
Antes de começar
Para implantar o aplicativo:
O proprietário do projeto do Google Cloud precisa criar o aplicativo do App Engine.
Verifique se a conta de usuário inclui os privilégios exigidos.
conceda permissão ao Cloud Build para implantar aplicativos no projeto. Quando você implanta seu aplicativo, o App Engine usa o Cloud Build para criar o aplicativo em um contêiner e implantar o contêiner no ambiente de execução na região do aplicativo. O Cloud Build não tem permissão para implantar aplicativos Java 8 por padrão. Portanto, você precisa conceder permissão antes de implantar aplicativos.
Como configurar a ferramenta de build do Maven (recomendado)
Para implantar seu aplicativo usando a ferramenta de build do Maven, configure o projeto para usar o plug-in Maven para App Engine.
- Instale a CLI gcloud, o componente
app-engine-java
e faça login. - Compile e construa seu projeto usando o plugin Maven.
Como instalar a CLI gcloud
Para implantar o aplicativo com a CLI gcloud, faça o download, instale e inicialize a CLI gcloud.
Se a CLI gcloud já estiver instalada e você quiser configurá-la para usar um ID de projeto do Google Cloud diferente do usado na inicialização, consulte Como gerenciar as configurações da CLI gcloud.
Usar um proxy
Caso esteja executando o comando de implantação de um sistema que usa proxy HTTP ou HTTPS, é preciso configurar a ferramenta para que possa se 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 é possível definir um username
e um password
para o proxy. Para mais informações, consulte gcloud config.
Como implantar um aplicativo
Para implantar o aplicativo no App Engine, use a ferramenta de build do Maven (recomendado) ou o comando gcloud app deploy
no diretório raiz do aplicativo.
Como usar o Maven (recomendado)
Para implantar o aplicativo com a ferramenta de build do Maven, execute o seguinte comando no diretório de nível superior do projeto em que o arquivo pom.xml
está localizado:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto do Google Cloud. Se
o arquivo pom.xml
já
especificar o
ID do projeto, não será necessário incluir a propriedade -Dapp.deploy.projectId
no
comando executado.
Como usar a linha de comando gcloud
gcloud app deploy [CONFIGURATION_FILES]
Substitua [CONFIGURATION_FILES]
pelo caminho para um ou mais arquivos de configuração.
Use um único espaço em branco para separar caminhos.
Sinalizações opcionais:
--version
: especifica um ID de versão personalizado. Se você não especificar um ID de versão, o App Engine gerará um.--no-promote
: implanta o aplicativo sem encaminhar automaticamente todo o tráfego para essa versão. Por padrão, cada versão que você implanta é automaticamente configurada para receber todo o tráfego.--project
: especifica um ID do projeto do Google Cloud alternativo para o que você inicializou como padrão na CLI gcloud.
Para mais informações, consulte a referência gcloud app deploy
ou execute gcloud help
na linha de comando.
Escolher códigos de versão únicos
Para instâncias com escalonamento manual, o ID da versão começa com uma letra para distingui-las dos IDs de instância numéricos. Isso garante que as solicitações sejam roteadas para o destino correto e evita a ambiguidade com padrões de URL como123-dot-my-service.[REGION_ID].r.appspot.com
, que são interpretados de duas maneiras:
- Se a versão
123
existir, a solicitação será roteada para a versão123
do serviçomy-service
. - Se a versão
123
não existir, a solicitação será encaminhada para o ID de instância123
, no qual as versões do serviçomy-service
estão em execução.
No caso de instâncias configuradas para escalonamento automático ou básico, as versões podem ser nomeadas como você quiser porque a segmentação dessas instâncias não está disponível.
Implantar vários aplicativos de serviços
Quando o aplicativo é fatorado em vários serviços, é possível implantar e atualizar serviços segmentados individualmente ou todos os serviços simultaneamente. Implantar atualizações em serviços pode incluir a atualização de arquivos de configuração individuais ou do código-fonte nas versões correspondentes.
Por exemplo, é possível implantar e criar duas versões no App Engine, sendo que cada uma será executada no próprio serviço. A primeira versão serve como o serviço de front-end, e a outra, como o back-end do seu aplicativo. Então, será possível implantar arquivos de configuração individuais para atualizar somente as configurações de um serviço. Também é possível implantar uma nova versão em um serviço para atualizar o código-fonte do front-end, do back-end ou de ambos ao mesmo tempo.
Requisitos para vários serviços
Use os mesmos comandos para implantar e atualizar os diversos serviços do aplicativo com os requisitos a seguir:
Inicialmente, você precisa implantar uma versão do app no serviço
default
antes de criar e implantar os serviços subsequentes.Especifique o ID do serviço no arquivo de configuração
appengine-web.xml
da versão correspondente. Para isso, inclua a definição do elementomodule: [YOUR_SERVICE_ID]
em cada arquivo de configuração. Por padrão, a exclusão da definição desse elemento do arquivo de configuração implanta a versão no serviçodefault
.Especifique todos os arquivos de configuração
appengine-web.xml
correspondentes no comando de implantação para implantar vários serviços simultaneamente. É preciso listar o serviçodefault
primeiro.
Para implantar vários serviços
No diretório raiz do aplicativo em que os arquivos de configuração estão localizados, execute o comando de implantação e especifique os caminhos relativos e os nomes dos arquivos appengine-web.xml
de cada serviço.
Como usar a ferramenta de build do Maven
Se o diretório raiz do projeto contiver apenas os serviços, implante todos eles com um único comando do Maven.
O comando de implantação do Maven itera em cada um dos serviços do projeto para localizar os respectivos arquivos de configuração e então implantar cada serviço.
Para implantar vários serviços usando o plugin Maven, siga estas etapas:
- Certifique-se de que appengine-maven-plugin foi adicionado ao arquivo pai
pom.xml
. Execute este comando:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto do Google Cloud. Se o arquivo
pom.xml
já especificar o ID do projeto, não será necessário incluir a propriedade-Dapp.deploy.projectId
no comando executado.
Como usar a gcloud
gcloud app deploy [CONFIGURATION_FILES]
Substitua [CONFIGURATION_FILES]
pelo caminho para um ou mais arquivos de configuração.
Use um espaço em branco para separar caminhos.
Você receberá a verificação na linha de comando assim que cada serviço for implantado com sucesso.
Como visualizar registros de build
Os streams do Cloud Build criam e implantam registros visíveis na seção de histórico do Cloud Build do Console do Google Cloud. Para ver as versões na região do aplicativo, use o menu suspenso Região, na parte superior da página, e escolha a região que você quer filtrar.
Como atualizar índices
Para criar ou atualizar os índices usados pelos aplicativos, faça upload do arquivo de configuração datastore-indexes.xml
no Datastore. Os índices que ainda não existem serão criados após o upload do arquivo de configuração.
Levará algum tempo até que o Datastore crie todos os índices. Portanto, eles não estarão imediatamente disponíveis no App Engine. Se o aplicativo já estiver configurado para receber tráfego, é possível que ocorram exceções nas consultas que necessitarem de um índice que ainda estiver sendo criado.
Para evitar exceções, é necessário aguardar a criação de todos os índices. Por exemplo:
Faça upload do arquivo de configuração
index.xml
no Datastore antes de implantar a versão:Faça upload do arquivo
index.xml
no Datastore: Para mais informações, consulte a referênciagcloud datastore indexes create index.yaml
gcloud datastore
.Use o console do Google Cloud para monitorar o status de todos os índices:
Após a criação de todos os índices, implante a nova versão no App Engine.
Crie os índices antes de migrar ou dividir o tráfego para a versão:
- Defina um novo ID de versão no arquivo
appengine-web.xml
do app. - Implante a nova versão.
- Use o console do Cloud para monitorar o status de todos os índices:
- Após a criação de todos os índices, use o console do Google Cloud para migrar ou dividir o tráfego para sua versão:
- Defina um novo ID de versão no arquivo
Para mais informações sobre índices, consulte Como configurar índices do Datastore.
Solução de problemas
Estas são mensagens de erro comuns que você pode encontrar:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Se o projeto do Google Cloud não incluir o aplicativo
necessário do
App Engine, o
comando
gcloud app deploy
pode falhar ao tentar executar o comandogcloud app create
. Somente contas com o papel Proprietário têm as permissões necessárias para criar aplicativos do App Engine. Command not found
- Consulte Como usar o servidor de desenvolvimento local para ver instruções sobre como configurar a ferramenta do servidor de desenvolvimento local.
Import Error
- Se você instalou a CLI gcloud e o SDK originais do App Engine e do Cloud, as entradas para o PATH talvez entrem em conflito e causem erros de importação. Se você recebeu erros ao executar os 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 implantar e criar os vários serviços do aplicativo, é necessário primeiro implantar e criar o serviço
default
. Para mais detalhes sobre como implantar uma versão no serviçodefault
, consulte Como implantar vários aplicativos de serviço. Too Many Versions (403)
- O App Engine tem um número limitado de versões implantadas do aplicativo. Esse número é diferente para aplicativos gratuitos e aplicativos implantados.
Use o console do Google Cloud para excluir uma versão mais antiga e fazer upload do código mais recente.
You do not have permission to modify this app (403)
- Isso pode ocorrer quando a conta com que você está autenticado não tem permissão para implantar no ID do aplicativo especificado no comando ou no
appengine-web.xml
. Verifique se o ID do aplicativo está correto e corresponde ao valor do ID do projeto do console do Google Cloud. Em seguida, verifique as permissões do projeto no console e verifique se sua conta está listada com um nível de permissão suficiente para permitir a implantação de aplicativos. [13] An internal error occurred while creating a Cloud Storage bucket.
O App Engine cria um bucket multirregional padrão do Cloud Storage em seu nome, na mesma região em que o aplicativo é criado. Esse bucket é necessário para armazenar o conteúdo do aplicativo. Este erro é retornado quando o bucket não pode ser criado nos seguintes cenários:
A conta de serviço padrão do App Engine não está presente no projeto. Se a conta foi removida antes de 30 dias após a exclusão, é possível restaurá-la.
O projeto está em uma organização que aplica a política
constraints/gcp.resourceLocations
e ela não permite a criação de recursos na mesma região em que o App Engine foi criado. Você precisará substituir a políticaconstraints/gcp.resourceLocations
aplicada ao projeto e permitir os locais multirregionais na mesma região em que o aplicativo do App Engine foi criado.
[13] An internal error occurred
Esse erro poderá ocorrer se o arquivo de configuração
app.yaml
do App Engine contiver um recurso inválidoname
na chavevpc_access_connector
. Verifique se o camponame
contém a região e o projeto corretos em que o conector de acesso VPC sem servidor foi criado.Se o problema persistir depois de confirmar que a configuração
app.yaml
é válida, use o SDK do Google Cloud para reimplantar o serviço, adicionar a sinalização--verbosity=debug
e entrar em contato com Suporte do Cloud fornecendo a saída do comando.- Outro erro de implantação
Se a implantação falhar, verifique se a API Cloud Build está ativada no projeto. O App Engine ativa essa API automaticamente na primeira vez que você implantar um aplicativo, mas se alguém tiver desativado a API, as implantações falharão.
A seguir
- Use serviços para criar um aplicativo grande.
- Divida ou migre o tráfego para direcioná-lo às versões implantadas.
- Consulte os argumentos e as sinalizações da linha de comando
gcloud app deploy
.