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 Flask, é possível usar outros frameworks da Web, incluindo Django, Pyramid, Bottle e web.py.
Este tutorial é uma adaptação 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 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 em um laptop, neste codelab você vai usar 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 você estiver iniciando o Cloud Shell pela primeira vez, verá uma tela intermediária com a descrição dele. Se aparecer uma tela intermediária, clique em Continuar.
Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.
Essa máquina virtual tem 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. Grande parte do trabalho neste codelab, se não todo, pode ser feito em um navegador.
Depois de se conectar ao Cloud Shell, você verá sua autenticação e o projeto estará 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 seguinte comando no Cloud Shell para confirmar que 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. Programar 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. Use o diretório $HOME
no armazenamento de disco permanente para armazenar arquivos de vários projetos e sessões do Cloud Shell. Seu diretório $HOME
é particular e não pode ser acessado por outros usuários.
Para começar, crie 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 clique no botão do editor do Cloud Shell:
Para editar o arquivo diretamente com o Cloud Shell Editor, 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 seu 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 um 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 seu 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 seu diretório:
ls
Você precisa ter os três arquivos a seguir:
app.yaml main.py requirements.txt
Implante seu 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 seu app da Web com o comando gcloud app describe
:
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Teste seu app da Web 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 seu app da Web:
gcloud app deploy --quiet
A nova versão do seu aplicativo é 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 seu app da Web exatamente como fez anteriormente:
curl https://$APPENGINE_HOSTNAME
Você receberá a mesma resposta:
Hello World!
Faça um 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 seu app da Web sem qualquer interrupção do serviço.
9. Parabéns!
Você aprendeu a criar seu primeiro aplicativo da Web do App Engine em Python.
Saiba mais
- Documentação do App Engine: https://cloud.google.com/appengine
- Veja este tutorial para criar 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.