1. Visão geral

Os aplicativos do Google App Engine são fáceis de criar, manter e escalonar de acordo com as alterações necessárias no tráfego e no armazenamento de dados. Com o App Engine, você não precisa se preocupar com a manutenção dos servidores. Basta fazer upload do seu aplicativo.
Neste codelab, você vai aprender a implantar um app da Web simples em Python escrito com o framework da Web Flask. Embora este exemplo use o Flask, é possível usar outros frameworks da Web, incluindo Django, Pyramid, Bottle e web.py.
Este tutorial foi adaptado de https://cloud.google.com/appengine/docs/standard/python3/quickstart
O que você vai aprender
- Como criar um servidor Python simples no Google App Engine.
- Como atualizar o código sem deixar o servidor indisponível
O que é necessário
- Familiaridade com o Python
- Conhecer os editores de texto padrão do Linux, como vim, emacs ou nano.
Pesquisa
Como você vai usar este tutorial?
Como você classificaria sua experiência com Python?
Como você classificaria sua experiência com os serviços do Google Cloud?
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Inicie o Cloud Shell
Embora o Google Cloud possa ser operado remotamente do seu laptop, neste codelab usaremos o Cloud Shell, um ambiente de linha de comando executado no Cloud.
Ativar o Cloud Shell
- No Console do Cloud, clique em Ativar o Cloud Shell
.

Se esta for a primeira vez que você inicia o Cloud Shell, uma tela intermediária vai aparecer com a descrição dele. Se isso acontecer, clique em Continuar.

Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, quase todo o trabalho pode ser feito com um navegador.
Depois de se conectar ao Cloud Shell, você vai ver que sua conta já está autenticada e que o projeto está configurado com o ID do seu projeto.
- Execute o seguinte comando no Cloud Shell para confirmar se a conta está autenticada:
gcloud auth list
Resposta ao comando
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto:
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se o projeto não estiver configurado, configure-o usando este comando:
gcloud config set project <PROJECT_ID>
Resposta ao comando
Updated property [core/project].
3. Escrever o app da Web
Depois que o Cloud Shell for iniciado, use a linha de comando para invocar o comando gcloud do SDK Cloud ou outras ferramentas disponíveis na instância da máquina virtual. Você pode usar o diretório $HOME no armazenamento em disco permanente para armazenar arquivos em vários projetos e entre sessões do Cloud Shell. Seu diretório $HOME é privado e não pode ser acessado por outros usuários.
Vamos começar criando uma nova pasta no diretório $HOME para o aplicativo:
mkdir ~/helloworld cd ~/helloworld
Crie um arquivo chamado main.py:
touch main.py
Edite o arquivo com o editor de linha de comando que preferir (nano, vim ou emacs) ou clicando no botão "Editor do Cloud Shell":

Para editar o arquivo diretamente com o editor do Cloud Shell, use este comando:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
return "Hello World!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
4. Definir as dependências
Para especificar as dependências do seu app da Web, volte ao terminal e crie um arquivo requirements.txt no diretório raiz do projeto com a versão exata do Flask a ser usada:
touch requirements.txt
Para editar o arquivo com o editor do Cloud Shell, use este comando:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/Flask
Flask==3.0.2
5. Configurar a implantação
Para implantar o app da Web no App Engine, você precisa de um arquivo app.yaml. Esse arquivo de configuração define as configurações do seu app da Web para o App Engine.
No terminal, crie e edite o arquivo app.yaml no diretório raiz do projeto:
touch app.yaml
Para editar o arquivo com o editor do Cloud Shell, use este comando:
cloudshell edit app.yaml
app.yaml
runtime: python312
6. Implantar o app da Web
No terminal, verifique o conteúdo do diretório:
ls
Você precisa ter os três arquivos a seguir:
app.yaml main.py requirements.txt
Implante o app da Web com o seguinte comando:
gcloud app deploy
Na primeira vez, você precisa escolher uma região de implantação:
Please choose the region where you want your App Engine application located: [1] asia-east2 ... [7] australia-southeast1 [8] europe-west [9] europe-west2 ... [12] northamerica-northeast1 [13] southamerica-east1 ... [19] us-west4 ... Please enter your numeric choice:
Confirme para iniciar a implantação:
Creating App Engine application in project [PROJECT_ID] and region [REGION]....done. Services to deploy: descriptor: [~/helloworld/app.yaml] source: [~/helloworld] target project: [PROJECT_ID] target service: [default] target version: [YYYYMMDDtHHMMSS] target url: [https://PROJECT_ID.REGION_ID.r.appspot.com] Do you want to continue (Y/n)?
Seu app é implantado:
Beginning deployment of service [default]... Created .gcloudignore file. See `gcloud topic gcloudignore` for details. Uploading 3 files to Google Cloud Storage 100% File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Seu app da Web agora está pronto para responder a solicitações HTTP em https://PROJECT_ID.REGION_ID.r.appspot.com.
7. Testar o app da Web
Seu app da Web está pronto para responder a solicitações HTTP em https://PROJECT_ID.REGION_ID.r.appspot.com.
Primeiro, recupere o nome do host do app da Web com o comando gcloud app describe:
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Teste seu web app com esta solicitação GET HTTP simples:
curl https://$APPENGINE_HOSTNAME
Você vai receber a seguinte resposta:
Hello World!
Resumo
Nas etapas anteriores, você configurou, executou e implantou um app da Web simples em Python no App Engine.
8. Atualizar o app da Web
Modifique o app da Web mudando o corpo da função hello() no arquivo main.py.
Para editar o arquivo com o editor do Cloud Shell, use este comando:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
# return "Hello World!\n" # ← Replace this line
who = flask.request.args.get("who", "World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
No terminal, reimplante para atualizar o app da Web:
gcloud app deploy --quiet
A nova versão do app é implantada:
Beginning deployment of service [default]... Uploading 1 file to Google Cloud Storage ... Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Teste a nova versão do web app da mesma forma que fez antes:
curl https://$APPENGINE_HOSTNAME
Você vai receber a mesma resposta:
Hello World!
Teste com o parâmetro opcional:
curl https://$APPENGINE_HOSTNAME?who=Universe
Você vai receber a seguinte resposta:
Hello Universe!
Resumo
Nesta etapa, você atualizou e reimplantou o app da Web sem interrupção do serviço.
9. Parabéns!
Você aprendeu a escrever seu primeiro aplicativo da Web do App Engine em Python.
Saiba mais
- Documentação do App Engine: https://cloud.google.com/appengine
- Confira este tutorial para escrever um app Python completo no App Engine: https://cloud.google.com/appengine/docs/standard/python3/building-app
Licença
Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.