Visão geral
O Artifact Registry fornece um único local para armazenar e gerenciar
pacotes e imagens de contêiner do Docker.
O Cloud Build é um serviço que executa seus builds no Google Cloud.
O Cloud Run é uma plataforma de computação gerenciada para executar contêineres na infraestrutura escalonável do Google.
O Google Cloud Observability oferece serviços gerenciados integrados de monitoramento, geração de registros e rastreamento para aplicativos.
As bibliotecas de cliente do Cloud são o método recomendado para chamar as APIs do Google Cloud em aplicativos. Elas usam as convenções e o estilo naturais da linguagem de programação usada no aplicativo. As bibliotecas de cliente do Cloud lidam com a comunicação de baixo nível com o servidor, incluindo a lógica de autenticação e repetição.
As APIs do Google usam o protocolo OAuth 2.0 para autenticação e autorização
O Secret Manager permite armazenar chaves de API, senhas, certificados e outros dados sensíveis como blobs binários ou strings de texto.
Neste laboratório, você vai executar um aplicativo em Python no Cloud Shell e depois implantá-lo no Cloud Run. Você vai resolver problemas que surgem quando o aplicativo é transferido para o Cloud Run e conhecer os recursos de desenvolvimento de aplicativos do pacote de operações do Google Cloud.
O que você vai aprender
Neste laboratório, você vai aprender a:
- Conteinerizar e publicar um aplicativo da Web em Python no Artifact Registry.
- Implantar um aplicativo conteinerizado no Cloud Run.
- Usar registros para depurar problemas de aplicativo.
- Adicionar o Error Reporting a um aplicativo.
Configuração e requisitos
Antes de clicar no botão "Começar o laboratório"
Importante: leia estas instruções.
Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático do Qwiklabs permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você receberá novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
O que é necessário
Veja os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome)
- Tempo disponível para concluir as atividades
Observação: não use seu projeto ou conta pessoal do Google Cloud neste laboratório.
Observação: se você estiver usando um Pixelbook, faça o laboratório em uma janela anônima.
Como começar o laboratório e fazer login no console
-
Clique no botão Começar o laboratório. Se for preciso pagar pelo laboratório, você verá um pop-up para selecionar a forma de pagamento.
Um painel aparece à esquerda contendo as credenciais temporárias que você precisa usar no laboratório.

-
Copie o nome de usuário e clique em Abrir console do Google.
O laboratório ativa os recursos e depois abre a página Escolha uma conta em outra guia.
Observação: abra as guias em janelas separadas, lado a lado.
-
Na página "Escolha uma conta", clique em Usar outra conta. A página de login abre.

-
Cole o nome de usuário que foi copiado do painel "Detalhes da conexão". Em seguida, copie e cole a senha.
Observação: é necessário usar as credenciais do painel "Detalhes da conexão". Não use suas credenciais do Google Cloud Ensina. Não use sua conta pessoal do Google Cloud, caso tenha uma neste laboratório (isso evita cobranças).
- Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Cloud abre nesta guia.
Observação: para acessar a lista dos produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo.
Ative o Google Cloud Shell
O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.
O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
-
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

-
Clique em Continuar.
O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- Para listar o nome da conta ativa, use este comando:
gcloud auth list
Saída:
Credentialed accounts:
- @.com (active)
Exemplo de saída:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- Para listar o ID do projeto, use este comando:
gcloud config list project
Saída:
[core]
project =
Exemplo de saída:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Observação:
a documentação completa da gcloud está disponível no
guia com informações gerais sobre a gcloud CLI
.
Tarefa 1: configurar o aplicativo Python e os recursos necessários
Nesta tarefa, você vai fazer o download do aplicativo Python e criar os recursos usados pela versão atual do app.
Observação: na maioria das linguagens, o recuo é usado para tornar o código mais legível. O Python usa o recuo para indicar um bloco de código, então o recuo precisa estar correto. O número de espaços usados no recuo precisa ser consistente. Misturar espaços e tabulações de recuo também pode causar problemas. Este laboratório usa quatro espaços para os recuos do Python.
Crie o banco de dados do Firestore
-
Para criar o banco de dados do Firestore, execute o seguinte comando no Cloud Shell:
gcloud firestore databases create --location={{{ project_0.default_region | region }}}
O banco de dados do Firestore é usado para armazenar dados de livros e perfis de usuários.
-
Se for solicitado que você autorize o Cloud Shell, clique em Autorizar.
Crie o bucket do Cloud Storage com as permissões corretas.
-
Para criar o bucket do Cloud Storage execute o seguinte comando:
gcloud storage buckets create gs://${GOOGLE_CLOUD_PROJECT}-covers --location={{{ project_0.default_region | region }}} --no-public-access-prevention --uniform-bucket-level-access
O bucket do Cloud Storage é usado para armazenar imagens de capa de livros. O bucket tem acesso uniforme no nível do bucket e não usa a prevenção de acesso público.
Observação: se o comando falhar e o erro indicar que a conta não tem credenciais válidas, tente o comando novamente. As permissões da conta de estudante do Qwiklabs talvez ainda não tenham sido propagadas.
-
Para tornar todos os objetos no bucket acessíveis publicamente, execute o comando a seguir:
gcloud storage buckets add-iam-policy-binding gs://${GOOGLE_CLOUD_PROJECT}-covers --member=allUsers --role=roles/storage.legacyObjectReader
Crie a tela de permissão OAuth
Quando você usa o OAuth 2.0 para autorização, seu app solicita autorizações para um ou mais escopos de acesso de uma Conta do Google. O Google exibe uma tela de permissão ao usuário a fim de capturar a permissão dele para compartilhar dados com o aplicativo.
-
No console do Google Cloud, selecione o menu de navegação (
) e depois APIs e serviços > Tela de permissão OAuth.
-
Clique em Primeiros passos.
-
Em Nome do app, insira Bookshelf
.
-
Em E-mail para suporte do usuário, selecione o e-mail do estudante.
-
Clique em Próxima.
-
Em Público-alvo, selecione Interno e clique em Próxima.
Os usuários com acesso ao projeto devem conseguir fazer login no app.
-
No painel esquerdo das instruções do laboratório, copie o Nome de usuário.

-
Em Endereços de e-mail, cole o nome de usuário copiado e clique em Próxima.
-
Marque a caixa de seleção para aceitar a política de dados do usuário e clique em Continuar.
-
Clique em Criar.
-
No menu de navegação, clique em Branding.
-
Clique em + Adicionar domínio.
-
Na seção Domínios autorizados, em Domínio autorizado 1, insira cloudshell.dev
.
-
Clique em Salvar.
-
No menu de navegação, selecione Acesso aos dados.
-
Clique em Adicionar ou remover escopos.
-
No início da lista, selecione a caixa ao lado de openid.
-
Em Filtro, digite userinfo.profile
, pressione Enter e selecione a caixa ao lado do escopo .../auth/userinfo.profile
.
-
Em Filtro, desmarque o filtro userinfo.profile, insira contacts
, pressione Enter e selecione a caixa do escopo .../auth/contacts
.c
-
Clique em Atualizar.
Você deve ver dois escopos não sensíveis (openid e userinfo.profile) e um sensível (contacts).
-
Clique em Salvar.
Crie as credenciais do OAuth 2.0
-
No menu de navegação, clique em Clientes e depois em + Criar cliente.
-
Em Tipo de aplicativo, selecione Aplicativo da Web.
-
Em Nome, insira Bookshelf
.
-
Para URIs de redirecionamento autorizados, clique em + Adicionar URI.
O URI especificado aqui será usado quando o Google redirecionar o navegador de volta ao aplicativo depois de capturar a permissão do usuário.
-
Para acessar o URI de redirecionamento, execute o seguinte comando no Cloud Shell:
echo "https://8080-${WEB_HOST}/oauth2callback"
-
Copie o URI criado pelo comando echo e cole em URIs 1.
-
Clique em Criar.
-
Para o ID do cliente OAuth 2.0 do Bookshelf, na coluna Ações, clique em Fazer o download do cliente OAuth (
).
-
Clique em Fazer o download do JSONe então salve o JSON da chave secreta do cliente na sua máquina local.
O arquivo da chave secreta do cliente será usado para verificar seu app com o Google.
-
Clique em Fechar.
-
No Cloud Shell, clique em Mais (
) na barra de ferramentas à direita e, em seguida, em Fazer upload.
-
Clique em Escolher arquivos, selecione o arquivo JSON da chave secreta do cliente e clique em Abrir.
-
Clique em Fazer upload.
O arquivo JSON da chave secreta do cliente agora está disponível no diretório principal. O conteúdo desse arquivo será usado durante o processo do OAuth.
Armazene o JSON da chave secreta do cliente no Secret Manager
O Secret Manager é um local seguro e recomendado para armazenar o arquivo JSON da chave secreta do cliente.
-
Para ativar a API do Secret Manager, execute o seguinte comando no Cloud Shell:
gcloud services enable secretmanager.googleapis.com
-
Para renomear o arquivo da chave secreta do cliente, execute o seguinte comando:
mv ~/client_secret*.json ~/client_secret.json
-
Para criar a chave secreta, execute o seguinte comando:
gcloud secrets create bookshelf-client-secrets --data-file=$HOME/client_secret.json
Agora há uma chave secreta chamada bookshelf-client-secrets
que pode ser acessada pelo aplicativo.
-
Para criar uma chave secreta para a chave secreta do Flask, execute o seguinte comando:
tr -dc A-Za-z0-9 </dev/urandom | head -c 20 | gcloud secrets create flask-secret-key --data-file=-
Esse comando cria uma senha aleatória de 20 caracteres alfanuméricos e a armazena em uma chave secreta chamada flask-secret-key
.
Copie o código Python para o Cloud Shell
-
Para copiar o código Python de um bucket do Cloud Storage para o diretório raiz, execute o seguinte comando:
gcloud storage cp -r gs://cloud-training/devapps-foundations/code/lab3/bookshelf ~
-
Para verificar o conteúdo do diretório do Bookshelf, execute o seguinte comando:
cd ~
ls -R bookshelf
Você deve ver uma lista com sete arquivos Python, um arquivo de requisitos e seis arquivos de modelo:
bookshelf:
booksdb.py main.py oauth.py profiledb.py requirements.txt secrets.py storage.py templates translate.py
bookshelf/templates:
base.html error.html form.html list.html profile.html view.html
Instale as dependências necessárias.
-
Para listar as dependências no arquivo de requisitos, execute o seguinte comando:
cat ~/bookshelf/requirements.txt
O arquivo de requisitos especifica as seguintes dependências:
-
Flask: um módulo de framework da Web usado para projetar aplicativos da Web em Python
-
Gunicorn: um servidor HTTP Python que é executado no Linux
-
Cloud Logging: usado para registrar as informações do aplicativo
-
Firestore: um banco de dados de documentos NoSQL rápido, totalmente gerenciado e sem servidor, criado para facilitar o desenvolvimento de aplicativos
-
Cloud Storage: o armazenamento de objetos unificado do Google Cloud
-
Secret Manager: armazenamento seguro para dados sensíveis
-
Suporte do Google ao OAuth 2.0: autenticação e autorização para APIs do Google
-
API do Cloud Translation: API para detectar o idioma de um texto e traduzi-lo para outros idiomas
-
Para instalar as dependências no arquivo de requisitos, execute o seguinte comando:
pip3 install -r ~/bookshelf/requirements.txt --user
O utilitário pip é o instalador de pacotes de Python. O comando pip3
instala os pacotes especificados no arquivo requirements.txt para uso com a versão 3 do Python.
Teste o aplicativo
-
Para iniciar o servidor HTTP, execute o seguinte comando:
cd ~/bookshelf; EXTERNAL_HOST_URL="https://8080-${WEB_HOST}" ~/.local/bin/gunicorn -b :8080 main:app
Há uma variável de ambiente sendo passada para o aplicativo:
-
EXTERNAL_HOST_URL
especifica o esquema e o nome do host que devem ser usados no URL de chamada de retorno.
O aplicativo está hospedado na porta 8080 agora.
-
Para executar o aplicativo no navegador da Web, clique em Visualização da Web e selecione Visualizar na porta 8080.

Uma nova guia é aberta no navegador e o aplicativo é executado. Esta página mostra uma lista de todos os livros existentes. Ainda não há livros.
Observação: se for preciso autorizar o Cloud Shell, clique em Autorizar.
-
Clique com o botão direito do mouse na imagem da capa do livro O Mágico de Oz e salve-a no computador como oz.png
:

-
Clique em + Adicionar livro.
É necessário fazer login para adicionar um livro. Por isso, escolha uma conta para fazer login com o Google:

-
Clique no e-mail do estudante e, em seguida, em Continuar.
-
Clique em Permitir.
-
Insira as seguintes informações no formulário:
Campo |
Valor |
Título |
O Mágico de Oz |
Autor |
Frank L. Baum |
Data da publicação |
1900 |
Descrição |
Não há lugar como o nosso lar! |
-
Em Imagem de capa, clique em Escolher arquivo.
-
Selecione o arquivo que você baixou (oz.png) e clique em Abrir.
-
Clique em Salvar.
A página de visualização será aberta com os detalhes do livro. Os detalhes do livro são armazenados no banco de dados do Firestore, e a imagem da capa é armazenada no Cloud Storage.
-
Clique no endereço de e-mail.
O perfil é exibido. O controle de seleção de idioma deve mostrar English
.
-
Mude o Idioma preferido para Espanhol e clique em Salvar.
-
Clique no livro O Mágico de Oz.
A página de visualização agora contém a descrição original em inglês e a tradução para o espanhol.
-
No Cloud Shell, para sair do aplicativo, pressione CTRL+C
.
Para verificar o objetivo, clique em Verificar meu progresso.
Configurar o aplicativo Python e os recursos necessários.
Tarefa 2: conteinerizar e publicar o aplicativo no Artifact Registry
Nesta tarefa, use o Cloud Build para conteinerizar o aplicativo e publicá-lo no Artifact Registry.
Crie o repositório
-
Para criar o repositório do Artifact Registry, execute o seguinte comando no Cloud Shell:
gcloud artifacts repositories create app-repo \
--repository-format=docker \
--location={{{ project_0.default_region | region }}}
O repositório vai armazenar o contêiner do aplicativo.
-
Para mostrar os detalhes do repositório, execute o seguinte comando:
gcloud artifacts repositories describe app-repo \
--location={{{ project_0.default_region | region }}}
Crie, conteinerize e publique o aplicativo
Você pode criar seu Dockerfile para empacotar o aplicativo em uma imagem Docker, mas o Cloud Build pode usar buildpacks para criar o contêiner.
-
Para criar o aplicativo usando o Cloud Build, execute o seguinte comando:
gcloud builds submit \
--pack image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
~/bookshelf
O comando cria a imagem Docker do código no diretório ~/bookshelf
e o armazena no repositório app-repo no Artifact Registry.
-
Para conferir a lista de builds, execute o seguinte comando:
gcloud builds list
O build Bookshelf aparece na lista.
Para verificar o objetivo, clique em Verificar meu progresso.
Conteinerizar e publicar o aplicativo no Artifact Registry.
Tarefa 3: implantar o app no Cloud Run e testar o aplicativo
Nesta tarefa, você vai implantar o aplicativo no Cloud Run e testá-lo.
Implante o app no Cloud Run
-
Para implantar o aplicativo no Cloud Run, execute o seguinte comando:
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT}
Observação: a variável de ambiente EXTERNAL_HOST_URL não é mais necessária.
-
Se for necessário ativar as APIs, digite y
.
O comando implanta a imagem que acabamos de criar no Cloud Run. Especificamos que as chamadas não autenticadas são permitidas porque os usuários só precisam fazer login quando quiserem criar, modificar ou excluir livros. A variável de ambiente GOOGLE_CLOUD_PROJECT
é fornecida ao aplicativo porque não está disponível no Cloud Run por padrão.
O Cloud Run implanta o aplicativo.
Observação: se você receber um erro indicando que run.googleapis.com não pode ser acessado, a ativação da API pode não ter sido propagada para o Cloud Run ainda. Repita o comando do Cloud Run até que ele funcione.
-
Para acessar o URL do aplicativo, execute o seguinte comando:
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
-
Clique no link criado pelo comando anterior.
Uma nova guia será aberta e a mensagem Serviço indisponível (ou outro erro) será exibida.
O aplicativo não está sendo executado corretamente: é necessário descobrir o motivo.
Para verificar o objetivo, clique em Verificar meu progresso.
Implantar o app no Cloud Run.
Tarefa 4: encontrar o problema e corrigir o aplicativo
Nesta tarefa, você vai usar os registros para ajudar a corrigir o problema.
Encontre o problema usando os registros
Ao encontrar um problema no aplicativo, os registros no Cloud Logging geralmente ajudam a corrigi-lo.
-
No console do Google Cloud, acesse o menu de navegação (
) e selecione Cloud Run.
-
Clique em bookshelf e, em seguida, na guia Registros.
Os registros são específicos do aplicativo Bookshelf no Cloud Run. Ao consultar os registros, você deve ver um erro de permissão negada
para secretmanager.versions.access
.
Quando o app está em execução no Cloud Shell, ele usa as credenciais do usuário logado. O usuário estudante pode acessar itens no Secret Manager, gravar arquivos no Cloud Storage e chamar a API Translation.
A menos que você forneça uma conta de serviço, os aplicativos do Cloud Run usarão a conta de serviço padrão do Compute Engine. Essa conta de serviço padrão não tem essas permissões.
É uma prática recomendada criar uma conta de serviço específica para o aplicativo, anexá-la a ele e fornecer as permissões corretas à conta de serviço.
Crie a conta de serviço e implante
-
Para criar uma conta de serviço para o aplicativo, execute o seguinte comando no Cloud Shell:
gcloud iam service-accounts create bookshelf-run-sa
Você ainda não adicionou nenhuma permissão. Para determinar o papel correto a ser adicionado, consulte a Referência de papéis básicos e predefinidos do IAM. Os papéis do Secret Manager incluem o papel Acessador de chaves secretas do Secret Manager, que deve fornecer as permissões mínimas para acessar as chaves secretas.
Observação: use um processo iterativo para descobrir as permissões que precisam ser adicionadas até que o aplicativo seja executado corretamente. Neste laboratório, você vai conceder as permissões necessárias à conta de serviço sem passar por esse processo.
-
Para adicionar os papéis necessários, execute os seguintes comandos:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/cloudtranslate.user"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/datastore.user"
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/storage.objectUser"
As permissões são para o Secret Manager, a API do Cloud Translation, o Firestore e o Cloud Storage.
O aplicativo em execução não vai receber as permissões imediatamente, mas vai recebê-las em alguns minutos. Para evitar o atraso, o app pode ser implantado novamente.
-
Para implantar novamente o aplicativo com uma conta de serviço, execute o seguinte comando:
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
-
Para abrir o aplicativo, execute o seguinte comando e clique no link:
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
Pode ser que apareça um erro. Esse erro ocorre porque as permissões da conta de serviço talvez ainda não tenham sido propagadas.
Se você consultar os registros do Bookshelf para o serviço do Cloud Run, verá um erro Permissões ausentes ou insuficientes. O app vai falhar até que as permissões sejam propagadas e a conta de serviço possa chamar os serviços necessários do Google Cloud.
-
Enquanto o app não abrir, feche a guia do aplicativo e clique no URL gerado novamente.
Quando as permissões forem propagadas, a página Livros vai aparecer.
Teste e corrija o OAuth
-
No aplicativo, clique em Fazer login.
Ocorrerá um erro no login.
A mensagem de erro indica que o acesso está bloqueado, o app enviou uma solicitação inválida e o erro é uma incompatibilidade de URI de redirecionamento. Esse erro ocorre porque o OAuth está configurado para execução apenas no cloudshell.dev
, e não no URL de serviço do Cloud Run.
-
No console do Google Cloud, selecione o menu de navegação (
), em seguida, APIs e serviços > Tela de permissão OAuth e Branding.
-
Clique em + Adicionar domínio.
-
No Cloud Shell, execute este comando:
echo "bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
O comando cria o URL do aplicativo sem o https://
.
-
Copie o nome de domínio para a área de transferência e cole em Domínio autorizado 2.
-
Clique em Salvar.
-
No menu de navegação, selecione Clientes.
-
Em IDs de cliente do OAuth 2.0, clique em Bookshelf.
-
Para URIs de redirecionamento autorizados, clique em + Adicionar URI.
-
Para acessar o URI de redirecionamento, execute o seguinte comando no Cloud Shell:
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app/oauth2callback"
-
Copie o URI criado pelo comando echo e cole em URIs 2.
-
Clique em Salvar.
O JSON do cliente OAuth mudou, então precisamos salvá-lo como uma chave secreta novamente.
-
Para o ID do cliente OAuth 2.0 do Bookshelf, na coluna Ações, clique em Fazer o download do cliente OAuth (
).
-
Clique em Fazer o download do JSON e salve o JSON atualizado da chave secreta do cliente na sua máquina local.
-
Clique em Fechar.
-
No Cloud Shell, clique em Mais (
) na barra de ferramentas à direita e, em seguida, em Fazer upload.
-
Clique em Escolher arquivos, selecione o arquivo JSON atualizado da chave secreta do cliente e clique em Abrir.
-
Clique em Fazer upload.
O arquivo JSON atualizado da chave secreta do cliente está disponível no diretório principal.
-
Para substituir o arquivo da chave secreta do cliente, execute os seguintes comandos no Cloud Shell:
rm ~/client_secret.json
mv ~/client_secret*.json ~/client_secret.json
-
Para adicionar uma versão atualizada da chave secreta, execute o seguinte comando:
gcloud secrets versions add bookshelf-client-secrets --data-file=$HOME/client_secret.json
A última chave secreta está correta. A chave secreta é carregada apenas uma vez no aplicativo, então você precisa reimplantar o aplicativo.
-
Para reimplantar, execute o seguinte comando:
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
-
Quando o aplicativo for implantado, execute o seguinte comando e clique no URL gerado:
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
O aplicativo está em execução.
-
No aplicativo, clique em Login e faça o login do usuário fornecendo permissão.
O endereço de e-mail agora é um link.
-
Clique no endereço de e-mail.
O idioma preferido ainda é o espanhol.
Para verificar o objetivo, clique em Verificar meu progresso.
Corrigir o aplicativo.
Tarefa 5: conhecer os recursos do Google Cloud Observability
Nesta tarefa, você vai conhecer alguns dos recursos do Google Cloud Observability que podem ser usados para manter a integridade do aplicativo.
Adicionar o Error Reporting ao aplicativo
O Error Reporting agrega erros nos serviços na nuvem em execução.
-
Para adicionar o papel necessário à conta de serviço, execute o seguinte comando no Cloud Shell:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
--role="roles/errorreporting.writer"
-
No Cloud Shell, em um editor de arquivos, abra o arquivo ~/bookshelf/requirements.txt
.
-
Adicione a linha abaixo:
google-cloud-error-reporting==1.9.2
O arquivo requirements.txt deve ficar assim:
Flask==2.3.3
gunicorn==23.0.0
google-cloud-logging==3.6.0
google-cloud-firestore==2.12.0
google-cloud-storage==2.10.0
google-cloud-secret-manager==2.16.4
google-api-python-client==2.101.0
google-auth==2.23.1
google-auth-oauthlib==1.1.0
google-cloud-translate==3.12.0
google-cloud-error-reporting==1.9.2
-
Salve o arquivo.
-
Para instalar as dependências atualizadas, execute o seguinte comando:
pip3 install -r ~/bookshelf/requirements.txt --user
-
Em um editor de arquivos, abra ~/bookshelf/main.py
.
-
Na linha após a declaração de importação cloud_logging
, adicione o código a seguir:
from google.cloud import error_reporting
-
Depois do final do endpoint /perfil
, adicione o código a seguir:
@app.route('/raiseerror')
def raise_error():
"""
Lance um erro manualmente.
"""
log_request(request)
print('raise_error()')
error_client = error_reporting.Client()
error_message = 'Intentionally Created Error'
error_client.report(
message=error_message,
http_context=error_reporting.build_flask_context(request),
)
session['error_message'] = f"{error_message}"
return redirect(url_for('.error'))
A chamada do endpoint /raiseerror
simulará um erro, gerando um erro no Error Reporting e redirecionando para a página de erro.
-
Salve o arquivo.
-
Para criar e implantar novamente o aplicativo, execute os seguintes comandos:
gcloud builds submit \
--pack image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
~/bookshelf
gcloud run deploy bookshelf \
--image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \
--region={{{ project_0.default_region | region }}} --allow-unauthenticated \
--update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
-
Quando o aplicativo for implantado, execute o seguinte comando e clique no URL gerado:
echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
-
Adicione /raiseerror
ao final do URL e clique em Enter
.
Você será redirecionado para a página de erro do aplicativo, com o erro Erro criado intencionalmente
.
-
Substitua error
por raiseerror
no URL e clique em Enter
.
Você será redirecionado para a página de erro do aplicativo. Você vai analisar esses erros em uma etapa posterior.
Para verificar o objetivo, clique em Verificar meu progresso.
Adicionar o Error Reporting ao aplicativo.
Explore a página de detalhes do serviço do Cloud Run
A página de detalhes do serviço do Cloud Run contém painéis integrados que ajudam você a gerenciar o serviço.
-
No console do Google Cloud, acesse o menu de navegação (
) e selecione Cloud Run.
-
Clique em bookshelf.
A guia Métricas é exibida.
-
Clique em Último dia e selecione Última hora.
A guia Métricas mostra uma lista de invocações de serviço que ocorreram na última hora e gráficos de métricas coletadas automaticamente.
-
Clique na guia Registros.
Todos os registros do serviço do Cloud Run podem ser acessados nesta guia.
Explore o Cloud Logging
-
No campo de pesquisa da barra de título do console do Google Cloud, no campo Pesquisar, digite Logging, clique em Pesquisar e depois em Logging.
Todos os registros estão disponíveis aqui.
-
Em Tipo de recurso, clique em Revisão do Cloud Run.
Todos os registros do Cloud Run são mostrados aqui. É possível filtrar por nome de serviço ou nome de revisão.
-
Em Gravidade, clique em Erro.
Os erros gerados no aplicativo são mostrados aqui. Se você tivesse mais aplicativos usando mais serviços, seria difícil distinguir as diferentes origens de erros nessa visualização.
Explore o Error Reporting
-
Na barra de título do console do Google Cloud, no campo Pesquisar, digite Error Reporting, clique em Pesquisar e depois em Error Reporting.
Os erros são agrupados nesta página. Muitos dos erros foram criados automaticamente quando o aplicativo Python no Cloud Run falhou. O erro gerado manualmente também é mostrado.
-
Clique em 1 hora.
-
Clique em Erro criado intencionalmente.
Erros semelhantes são agrupados aqui. O agrupamento de erros pode ajudar você a depurar problemas.
-
Em uma das amostras, clique em Ver registros.
Esse link leva você de volta ao Cloud Logging para a entrada deste registro. É possível fixar um erro registrado e conferir os registros que ocorreram na mesma época.
Observação: em um aplicativo real, você deve registrar todos os erros e informações que possam ajudar a identificar os problemas.
Parabéns!
Você conteinerizou e implantou um aplicativo no Cloud Run e depurou os problemas que surgiram. Você concedeu os papéis necessários à conta de serviço e atualizou a configuração do OAuth para oferecer suporte à implantação local e do Cloud Run. Você adicionou o Error Reporting ao aplicativo e explorou os recursos de desenvolvimento de aplicativos do Google Cloud Observability.
Próximas etapas / Saiba mais
Finalize o laboratório
Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.
Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.
O número de estrelas indica o seguinte:
- 1 estrela = muito insatisfeito
- 2 estrelas = insatisfeito
- 3 estrelas = neutro
- 4 estrelas = satisfeito
- 5 estrelas = muito satisfeito
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de empresas e produtos podem ser marcas registradas das empresas a que estão associados.