GSP185

Visão geral
O Cloud Storage permite o armazenamento global e a recuperação de volumes de dados a qualquer momento. Você pode usar o Cloud Storage em diversas situações, como na veiculação de conteúdo de sites, no armazenamento de dados para recuperação de desastres e arquivos ou na distribuição de grandes objetos de dados a usuários por download direto.
Neste laboratório, você irá configurar um aplicativo para usar o Cloud Storage no armazenamento e recuperação de dados. O aplicativo é um teste on-line e os dados são coletados nos formulários, que contêm uma imagem do computador local enviada por upload.
Objetivos
Neste laboratório, você aprenderá a:
- configurar o Cloud Shell como o ambiente de desenvolvimento;
- atualizar o código do aplicativo para integrar o Cloud Datastore;
- usar o aplicativo de teste para fazer upload de um arquivo de imagem no Cloud Storage e conferir a imagem no próprio aplicativo.
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:
- O botão Abrir Console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Detalhes do Laboratório.
-
Clique em Próxima.
-
Copie a Senha abaixo e cole na caixa de diálogo de Olá.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Detalhes do Laboratório.
-
Clique em Próxima.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
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 Google Cloud será aberto nesta guia.
Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias 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.
-
Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
-
Clique nas seguintes janelas:
- Continue na janela de informações do Cloud Shell.
- Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.
Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
A gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project
Saída:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Observação: consulte a documentação completa da gcloud
no Google Cloud no guia de visão geral da gcloud CLI.
Iniciar o editor de código do Cloud Shell
- No Cloud Shell, clique em Abrir editor para iniciar o editor de código.

Observação: o editor de código é iniciado em uma guia separada do navegador, junto com o Cloud Shell.
- Execute o comando a seguir para configurar o ID do seu projeto, substituindo
YOUR-PROJECT-ID
pelo ID especificado:
gcloud config set project <YOUR-PROJECT-ID>
Tarefa 1: prepare o aplicativo de teste
Nesta seção você vai acessar o Cloud Shell, clonar o repositório git que contém o aplicativo de teste e executar o aplicativo.
Clonar o código-fonte no Cloud Shell
- Clone o repositório deste curso usando o comando abaixo:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
Configurar e executar o aplicativo de teste
-
Mude o diretório de trabalho:
cd ~/training-data-analyst/courses/developingapps/python/cloudstorage/start
-
Defina a região usando uma variável:
REGION={{{project_0.default_region | REGION}}}
sed -i s/us-central/$REGION/g prepare_environment.sh
-
Configure o aplicativo:
. prepare_environment.sh
Observação:
ignore os avisos.
Esse arquivo de script faz o seguinte:
- Cria um aplicativo do App Engine
- Exporta a variável de ambiente
GCLOUD_PROJECT
- Atualiza o pip e depois executa
pip install -r requirements.txt
- Cria entidades no Cloud Datastore
- Exibe o ID do projeto
-
Execute o aplicativo:
python run_server.py
O aplicativo está sendo executado quando a seguinte saída aparece:
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 502-577-323
Revisar o aplicativo de teste
-
Para acessar o aplicativo, clique em Visualização na Web > Visualizar na porta 8080.
-
Clique no link Create Question na barra de ferramentas.
Um formulário simples com caixas de texto para as perguntas e respostas vai aparecer, além de botões de opção para a escolha da alternativa correta.

Observação:
o formulário tem um novo campo para upload de arquivos que pode ser usado no envio de imagens ou vídeos. Neste laboratório, você vai fazer o upload de um arquivo de imagem (semelhante ao upload de vídeos).
Tarefa 2: examine o código do aplicativo de teste
Nesta seção, você vai revisar o código do aplicativo para o estudo de caso.
Neste laboratório, você verá e editará arquivos. Você pode usar os editores de shell instalados no Cloud Shell, como nano
ou vim
, ou usar o editor de código do Cloud Shell.
Neste laboratório, vamos usar o editor do Cloud Shell para revisar o código do aplicativo de teste.
Verificar o código do aplicativo
-
Navegue até a pasta /training-data-analyst/courses/developingapps/python/datastore/start
usando o painel do navegador de arquivos no lado esquerdo do editor.
-
Selecione o arquivo add.html
na pasta …quiz/webapp/templates/
.
Esse arquivo contém o modelo para o formulário "Create Question".
O formulário foi modificado para usar multipart/form-data
como o enc-type
, e há dois novos controles de formulário:
- Um controle de upload de arquivo chamado
image
- Um campo oculto chamado
imageUrl
-
Selecione o arquivo routes.py
na pasta ...quiz/webapp
.
Esse arquivo contém a rota para o gerenciador POST que recebe os dados do formulário. Ele foi modificado para receber o arquivo de imagem do formulário.
-
Selecione o arquivo questions.py
na pasta ...quiz/webapp
.
Esse arquivo contém o gerenciador que processa os dados do formulário extraídos do arquivo routes.py
. Você modificará esse arquivo para usar um novo módulo que seja um cliente do Cloud Storage.
-
Selecione o arquivo ...quiz/gcp/storage.py
.
Nele, você escreverá o código para salvar os dados do arquivo de imagem no Cloud Storage.
Tarefa 3: crie um bucket do Cloud Storage
Nesta seção, você criará um bucket do Cloud Storage e exportará uma variável de ambiente que faz referência a ele.
-
Volte para a linha de comando do Cloud Shell.
-
Interrompa o aplicativo pressionando Ctrl + C.
-
Crie um bucket do Cloud Storage chamado <Project ID>-media
:
gsutil mb gs://$DEVSHELL_PROJECT_ID-media
É possível criar um bucket com o comando gsutil mb, transmitindo o nome do bucket como gs://BUCKET_NAME
Use $DEVSHELL_PROJECT_ID como o prefixo do nome do bucket seguido por -media
-
Para exportar o bucket do Cloud Storage como uma variável de ambiente com o nome GCLOUD_BUCKET
, execute este comando:
export GCLOUD_BUCKET=$DEVSHELL_PROJECT_ID-media
Observação:
lembre-se que o aplicativo usa as variáveis de ambiente para fazer a configuração.
Isso permite que a equipe de desenvolvedores implante o aplicativo durante o desenvolvimento, teste, preparo ou produção, alterando apenas essas variáveis.
Clique em Verificar meu progresso para conferir o objetivo.
Criar um bucket
Tarefa 4: adicione objetos ao Cloud Storage
Nesta seção, você vai escrever o código para salvar os arquivos enviados por upload no Cloud Storage.
Importante: atualize o código nas seções marcadas da seguinte maneira:
# TODO
# END TODO
Para maximizar seu aprendizado, revise o código, os comentários inline e a documentação da API relacionada.
Para mais informações sobre a documentação da API do Cloud Storage, consulte APIs e referência.
Importar e usar o módulo Python do Cloud Storage
- No editor de código, vá para o início do arquivo
...quiz/gcp/storage.py
.
- Confira o nome do bucket na variável de ambiente
GCLOUD_BUCKET
.
- Importe o módulo de armazenamento do pacote
google.client
.
- Crie um cliente do Cloud Storage.
- Crie uma referência para o bucket do Cloud Storage.
quiz/gcp/storage.py
# TODO: Confira o nome do bucket na
# variável de ambiente GCLOUD_BUCKET
bucket_name = os.getenv('GCLOUD_BUCKET')
# END TODO
# TODO: Importe o módulo de armazenamento
from google.cloud import storage
# END TODO
# TODO: Crie um cliente para o Cloud Storage
storage_client = storage.Client()
# END TODO
# TODO: Use o cliente para encontrar o bucket do Cloud Storage
bucket = storage_client.get_bucket(bucket_name)
# END TODO
Escreva o código para enviar um arquivo ao Cloud Storage
- Ainda em
storage.py
, na função upload_file(...)
, remova a instrução "pass" existente e use o cliente do Cloud Storage para fazer upload de um arquivo no bucket desse serviço e torná-lo público.
- Crie uma referência para um objeto blob do Cloud Storage no bucket.
- Use o objeto blob para fazer upload da imagem.
- Torne o arquivo público.
- Retorne o URL público do blob.
quiz/gcp/storage.py - Função upload)file(...)
"""
Uploads a file to a given Cloud Storage bucket and returns the public url
to the new object.
"""
def upload_file(image_file, public):
# TODO: Use o bucket para recuperar um objeto blob
blob = bucket.blob(image_file.filename)
# END TODO
# TODO: Use o blob para fazer upload do arquivo
blob.upload_from_string(
image_file.read(),
content_type=image_file.content_type)
# END TODO
# TODO: Torne o objeto público
if public:
blob.make_public()
# END TODO
# TODO: Modifique para encontrar o URL público do blob
return blob.public_url
# END TODO
- Salve o arquivo
storage.py
.
Escreva o código para usar a funcionalidade do Cloud Storage
- No editor, vá para o início do arquivo
...quiz/webapp/questions.py
.
- Modifique a instrução "import" para usar os clientes de armazenamento e de repositório de dados.
- Vá até a função
upload_file(...)
. Use o cliente de armazenamento para fazer upload de um arquivo e atribua o URL público retornado a uma variável.
- Modifique a instrução "return" para retornar o URL público.
- Vá até a função
save_question(...)
. Escreva um teste "if" para ver se o image_file
está presente.
- Se estiver, chame a função
upload_file(...)
e atribua o URL público a uma propriedade de entidade chamada imageUrl.
- Caso contrário, atribua uma string vazia à propriedade imageUrl da entidade.
quiz/webapp/questions.py
# TODO: Importe o módulo de importação
from quiz.gcp import storage, datastore
# END TODO
"""
uploads file into google cloud storage
- upload file
- return public_url
"""
def upload_file(image_file, public):
if not image_file:
return None
# TODO: Use o cliente de armazenamento para fazer upload do arquivo
# O segundo argumento é um booleano
public_url = storage.upload_file(
image_file,
public
)
# END TODO
# TODO: Returne o URL público
# do objeto
return public_url
# END TODO
"""
uploads file into google cloud storage
- call method to upload file (public=true)
- call datastore helper method to save question
"""
def save_question(data, image_file):
# TODO: Se houver um arquivo de imagem, faça o upload
# E atribua o resultado a um novo repositório de dados
# propriedade imageUrl
# Se não houver, atribua uma string vazia
if image_file:
data['imageUrl'] = str(
upload_file(image_file, True))
else:
data['imageUrl'] = u''
# END TODO
data['correctAnswer'] = int(data['correctAnswer'])
datastore.save_question(data)
return
- Salve o arquivo
questions.py
.
Execute o aplicativo e crie um objeto do Cloud Storage
- Salve os arquivos
...gcp/storage.py
e ...webapp/questions.py
e volte ao comando do Cloud Shell.
- Volte ao Cloud Shell para executar o aplicativo:
python run_server.py
-
Faça o download de um arquivo de imagem no armazenamento do Google e salve no computador.
-
No Cloud Shell, clique em Visualização na Web > Visualizar na porta 8080 para conferir o aplicativo de teste.
-
Clique no link Create Question.
-
Preencha o formulário com os valores a seguir e clique em Save.
Campo do formulário |
Valor |
Author |
Your name |
Quiz |
Google Cloud Platform |
Title |
Which product does this logo relate to? |
Image |
Upload the Google_Cloud_Storage_logo.png file you previously downloaded |
Answer 1 |
App Engine |
Answer 2 |
Cloud Storage (Select the Answer 2 radio button) |
Answer 3 |
Compute Engine |
Answer 4 |
Container Engine |
-
Volte ao console do Cloud e acesse Menu de navegação > Cloud Storage.
-
Em Cloud Storage > página Buckets, clique no bucket correto (nomeado <Project ID>-media
).
O novo objeto chamado Google_Cloud_Storage_logo.png
vai aparecer.
Faça upload de objetos para o bucket.
Execute o aplicativo cliente e teste o URL público do Cloud Storage
-
Adicione /api/quizzes/gcp
ao final do URL do aplicativo.
Você verá que os dados JSON foram retornados para o cliente correspondente à pergunta que você adicionou no aplicativo da Web.
A propriedade imageUrl terá um valor correspondente ao objeto no Cloud Storage.
-
Volte à página inicial do aplicativo e clique no link Take Test.
-
Clique em GCP e responda às questões.
Quando chegar à pergunta que acabou de ser adicionada, você verá que a imagem foi formatada no aplicativo da Web no lado do cliente.
Parabéns!
Com isso, concluímos o laboratório "Desenvolvimento de aplicativos: como armazenar arquivos de imagem e vídeo no Cloud Storage – Python". Você usou o Cloud Storage no armazenamento e na recuperação de dados.
Próximas etapas / Saiba mais
Manual atualizado em 24 de janeiro de 2025
Laboratório testado em 24 de janeiro de 2025
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 produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.