Primeiros passos com o App Engine (Python 3)

Primeiros passos com o App Engine (Python 3)

Sobre este codelab

subjectÚltimo mar. 27, 2024 atualizado
account_circleEscrito por Laurent Picard

1. Visão geral

befa7a877ccdd35d.png

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

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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

  1. No Console do Cloud, clique em Ativar o Cloud Shell853e55310c205094.png.

3c1dabeca90e44e5.png.

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.

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

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.

  1. 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`
  1. 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:

10af7b1a6240e9f4.gif

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

Licença

Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.