arrow_back

Perform Foundational Infrastructure Tasks in Google Cloud: laboratório com desafio

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Perform Foundational Infrastructure Tasks in Google Cloud: laboratório com desafio

Lab 1 hora universal_currency_alt 1 crédito show_chart Introdutório
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP315

Laboratórios autoguiados do Google Cloud

Introdução

Nos laboratórios com desafio, apresentamos uma situação e um conjunto de tarefas. Para concluí-las, em vez de seguir instruções passo a passo, você usará o que aprendeu nos laboratórios da Quest. Um sistema automático de pontuação (mostrado nesta página) avaliará seu desempenho.

Nos laboratórios com desafio, não ensinamos novos conceitos do Google Cloud. O objetivo dessas tarefas é aprimorar aquilo que você já aprendeu, como a alteração de valores padrão ou a leitura e pesquisa de mensagens para corrigir seus próprios erros.

Para alcançar a pontuação de 100%, você precisa concluir todas as tarefas no tempo definido.

Recomendamos este laboratório para os estudantes que se inscreveram na Quest Perform Foundational Infrastructure Tasks in Google Cloud do Google Cloud Ensina. Tudo pronto para começar o desafio?

Configuração

Antes de clicar no botão Start Lab

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 permite que você realize as atividades em um ambiente real de nuvem, 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 ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta do Google Cloud neste laboratório para evitar cobranças extras na sua conta.

Cenário do desafio

Você começou a trabalhar como engenheiro de nuvem júnior na Jooli Inc., onde ajuda as equipes a criar e gerenciar os recursos do Google Cloud.

Seu conhecimento deve ser suficiente para realizar essas tarefas sem guias explicativos

Seu desafio

Você precisa ajudar uma equipe de desenvolvimento recém-criada com as tarefas iniciais de um projeto novo de armazenamento e organização de fotos, chamado "Lembranças". A equipe pede para você definir as configurações iniciais do ambiente de desenvolvimento de aplicativos realizando as seguintes tarefas:

  • Criar um bucket para armazenar fotos
  • Criar um tópico do Pub/Sub que será usado pela função do Cloud criada por você
  • Criar uma função do Cloud
  • Remover o acesso do engenheiro de nuvem anterior ao projeto "Lembranças"

Confira algumas normas da Jooli Inc. que é preciso seguir:

  • Crie todos os recursos na região e na zona , a menos que haja uma instrução diferente.
  • Use as VPCs do projeto.
  • Os nomes têm o formato equipe-recurso. Por exemplo, o nome de uma instância pode ser kraken-webserver1.
  • Economize recursos. Como os projetos são monitorados, o uso excessivo de recursos pode levar ao encerramento desse projeto (e talvez da sua função). Por isso, tenha cuidado. Esta é a orientação da equipe de monitoramento: a menos que haja uma instrução diferente, use e2-micro para pequenas VMs do Linux e e2-medium para Windows ou outros aplicativos, como nós do Kubernetes.

Essas tarefas são descritas em detalhes a seguir. Boa sorte!

Tarefa 1: criar um bucket

É preciso criar um bucket com o nome para armazenar as fotos. Crie o recurso na região e na zona .

Clique em Verificar meu progresso para conferir o objetivo. Crie um bucket com o nome

Tarefa 2: criar um tópico do Pub/Sub

Crie um tópico do Pub/Sub com o nome para que a função do Cloud envie mensagens.

Clique em Verificar meu progresso para conferir o objetivo. Crie um tópico do Pub/Sub com o nome

Tarefa 3: criar a miniatura da função do Cloud

Crie uma função do Cloud que vai criar uma miniatura a partir de uma imagem adicionada ao bucket . Verifique se a função do Cloud está usando um ambiente de 2ª geração. Crie o recurso na região e na zona .

  1. Crie uma função do Cloud chamada
Observação: é preciso executar a função do Cloud toda vez que um objeto for criado no bucket criado na Tarefa 1. Durante o processo, a função do Cloud pode pedir permissão para ativar APIs. Ative cada uma das APIs obrigatórias, conforme solicitado.
  1. Defina o Ponto de entrada (função a ser executada) como . Em seguida, selecione Cloud Storage em Gatilho.

  2. Adicione o código a seguir a index.js:

const functions = require('@google-cloud/functions-framework'); const crc32 = require("fast-crc32c"); const { Storage } = require('@google-cloud/storage'); const gcs = new Storage(); const { PubSub } = require('@google-cloud/pubsub'); const imagemagick = require("imagemagick-stream"); functions.cloudEvent('{{{ project_0.startup_script.function }}}', cloudEvent => { const event = cloudEvent.data; console.log(`Event: ${event}`); console.log(`Hello ${event.bucket}`); const fileName = event.name; const bucketName = event.bucket; const size = "64x64" const bucket = gcs.bucket(bucketName); const topicName = "{{{ project_0.startup_script.topic }}}"; const pubsub = new PubSub(); if ( fileName.search("64x64_thumbnail") == -1 ){ // doesn't have a thumbnail, get the filename extension var filename_split = fileName.split('.'); var filename_ext = filename_split[filename_split.length - 1]; var filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length ); if (filename_ext.toLowerCase() == 'png' || filename_ext.toLowerCase() == 'jpg'){ // only support png and jpg at this point console.log(`Processing Original: gs://${bucketName}/${fileName}`); const gcsObject = bucket.file(fileName); let newFilename = filename_without_ext + size + '_thumbnail.' + filename_ext; let gcsNewObject = bucket.file(newFilename); let srcStream = gcsObject.createReadStream(); let dstStream = gcsNewObject.createWriteStream(); let resize = imagemagick().resize(size).quality(90); srcStream.pipe(resize).pipe(dstStream); return new Promise((resolve, reject) => { dstStream .on("error", (err) => { console.log(`Error: ${err}`); reject(err); }) .on("finish", () => { console.log(`Success: ${fileName} → ${newFilename}`); // set the content-type gcsNewObject.setMetadata( { contentType: 'image/'+ filename_ext.toLowerCase() }, function(err, apiResponse) {}); pubsub .topic(topicName) .publisher() .publish(Buffer.from(newFilename)) .then(messageId => { console.log(`Message ${messageId} published.`); }) .catch(err => { console.error('ERROR:', err); }); }); }); } else { console.log(`gs://${bucketName}/${fileName} is not an image I can handle`); } } else { console.log(`gs://${bucketName}/${fileName} already has a thumbnail`); } });
  1. Adicione o código a seguir a package.json:
{ "name": "thumbnails", "version": "1.0.0", "description": "Create Thumbnail of uploaded image", "scripts": { "start": "node index.js" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0", "@google-cloud/pubsub": "^2.0.0", "@google-cloud/storage": "^5.0.0", "fast-crc32c": "1.0.4", "imagemagick-stream": "4.1.1" }, "devDependencies": {}, "engines": { "node": ">=4.3.2" } }

Verifique se a miniatura foi criada corretamente.

Clique em Verificar meu progresso para conferir o objetivo. Verifique a função do Cloud

Tarefa 4: testar a infraestrutura

É necessário fazer upload de uma imagem JPG ou PNG para o bucket

  1. Faça o upload de uma imagem JPG ou PNG para o bucket .
Observação: outra alternativa é fazer download da imagem https://storage.googleapis.com/cloud-training/gsp315/map.jpg no seu computador e, em seguida, fazer upload no bucket.
  1. A imagem da miniatura aparece logo depois disso (use a opção ATUALIZAR em "Detalhes do bucket").

Tarefa 5: remover o engenheiro de nuvem anterior

Você perceberá que há dois usuários definidos no projeto:

  • um é sua conta ( com o papel de Proprietário);
  • o outro é o engenheiro de nuvem anterior ( com o papel de Leitor).
  1. Remova o acesso do engenheiro de nuvem anterior ao projeto.

Clique em Verificar meu progresso para conferir o objetivo. Remova o engenheiro de nuvem anterior

Parabéns!

Selo de habilidade "Perform Foundational Infrastructure Tasks in Google Cloud"

Conquiste seu próximo selo de habilidade

Este laboratório autoguiado faz parte da Quest Perform Foundational Infrastructure Tasks in Google Cloud. Após a conclusão, você ganha o selo de habilidade acima como reconhecimento. Compartilhe o selo no seu currículo e nas mídias sociais e use #GoogleCloudBadge para anunciar sua conquista.

Esta Quest faz parte dos programas de aprendizado Perform Foundational Infrastructure Tasks in Google Cloud e Cloud Architect do Google. Se você já tiver concluído outras atividades como essa no seu programa de aprendizado, consulte o catálogo do Google Cloud Ensina e encontre mais de 20 Quests com selos de habilidade para se inscrever.

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 19 de setembro de 2023

Laboratório testado em 19 de setembro de 2023

Copyright 2024 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.