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. 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 projectSaí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-IDpelo 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-analystConfigurar 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.pyO 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/startusando o painel do navegador de arquivos no lado esquerdo do editor.
 
- 
Selecione o arquivo add.htmlna 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-datacomo oenc-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.pyna 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.pyna 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çãoupload_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 oimage_fileestá 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.pye...webapp/questions.pye 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/gcpao 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.