Acesse mais de 700 laboratórios e cursos

Desenvolvimento de apps – Como processar dados do Cloud Pub/Sub usando o Cloud Functions: Node.js

Laboratório 2 horas universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Informações gerais

Neste laboratório, você vai otimizar o aplicativo de teste on-line criando uma função do Cloud para processar mensagens do Cloud Pub/Sub.

Esse processo aproveita vários produtos do GCP em um ambiente sem servidor: Cloud Pub/Sub, API Cloud Natural Language e Cloud Spanner.

Objetivos

Neste laboratório, você aprenderá a fazer o seguinte:

  • Criar uma função do Cloud que responde a mensagens do Cloud Pub/Sub.
  • Implantar vários arquivos em uma função do Cloud.

Configuração e requisitos

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
    Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
    Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.

  7. Aceite os termos e pule a página de recursos de recuperação.

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.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. 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:

ID do projeto em destaque no terminal do Cloud Shell

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: preparação do aplicativo de estudo de caso

Nesta seção, você vai acessar o Cloud Shell, clonar o repositório git que contém o aplicativo de teste, definir as variáveis de ambiente e executar o app.

Clonar o código-fonte no Cloud Shell

  1. Clone o repositório desta aula usando o comando abaixo:
git clone --depth=1 https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Crie um link flexível como atalho para o diretório de trabalho:
ln -s ~/training-data-analyst/courses/developingapps/v1.3/nodejs/cloudfunctions ~/cloudfunctions

Configurar e executar o aplicativo de estudo de caso

  1. Para mudar o diretório de trabalho, insira o seguinte comando:
cd ~/cloudfunctions/start
  1. Para substituir a região padrão em um arquivo com a região atribuída pelo laboratório, use os seguintes comandos:
export APP_REGION={{{project_0.startup_script.app_gcp_region | APP_REGION}}} export REGION={{{project_0.default_region | REGION}}} sed -i 's/us-central1/'"$REGION"'/g' prepare_environment.sh sed -i 's/us-central/'"$APP_REGION"'/g' prepare_environment.sh
  1. Para configurar o aplicativo de teste, insira o seguinte comando:
. prepare_environment.sh Observação: este arquivo de script faz o seguinte:
  • Cria um aplicativo do App Engine
  • Exporta as variáveis de ambiente GCLOUD_PROJECT e GCLOUD_BUCKET
  • Executa npm install
  • Cria entidades no Cloud Datastore
  • Cria um tópico do Cloud Pub/Sub
  • Cria uma instância, um banco de dados e uma tabela do Cloud Spanner
  • Imprime o ID do projeto do Google Cloud
  1. Para executar o web app, insira o seguinte comando:
npm start

Clique em Verificar meu progresso para conferir o objetivo. Configurar e executar o aplicativo de estudo de caso

Tarefa 2: uso do Cloud Functions

Nesta seção, você vai criar uma função do Cloud no seu projeto do Google Cloud que é acionada com a publicação de uma mensagem para o Cloud Pub/Sub, executa o aplicativo e monitora a invocação da função do Cloud.

Criar uma função do Cloud

  1. Para acessar o Cloud Run functions, no Menu de navegação (Ícone do menu de navegação), clique em Cloud Run.

  2. Clique em Escrever uma função.

  3. Em Nome do serviço, digite process-feedback.

  4. Em Região, selecione a região .

  5. Clique em + Adicionar gatilhos e selecione Gatilho do Pub/Sub no menu suspenso.

  6. Se necessário, clique em Ativar para ativar as APIs necessárias.

Na janela Gatilho do Pub/Sub, especifique o seguinte:

Propriedade Valor
Tipo de gatilho Fontes do Google
Provedor do evento Cloud Pub/Sub
Tipo de evento google.cloud.pubsub.topic.v1.messagePublished
Tópico do Cloud Pub/Sub projects/PROJECT_ID/topics/feedback
Região

Se você receber a notificação de que o Pub/Sub precisa do papel roles/iam.serviceAccountTokenCreator concedido à conta de serviço do Pub/Sub, clique em Conceder.

  1. Clique em Salvar gatilho.

  2. Clique em Criar.

  3. Analise a implementação da função fornecida.

Observação: a criação da função do Cloud pode levar alguns minutos.

Clique em Verificar meu progresso para conferir o objetivo. Criar uma função do Cloud

Executar o web app

  1. Volte para a janela do Cloud Shell.
  2. Visualize o web app clicando no botão "Visualização na Web" e selecionando Visualizar na porta 8080.
  3. Clique em Take Test.
  4. Clique em Places.
  5. Responda à pergunta.
  6. Avalie o teste, insira um feedback e clique em Send Feedback.

Visualizar registros e monitoramento da função do Cloud

  1. Volte para o console do Cloud Platform, na página do Cloud Run.
  2. Clique em process-feedback.
Observação: você vai ter acesso a um gráfico de monitoramento para invocações da função do Cloud. O gráfico pode demorar alguns minutos para exibir a invocação da sua função.
  1. Clique na guia Registros para visualizar.
  2. Para conferir seus dados na Análise de registros, clique no link no canto superior direito da página.
  3. Caso sua mensagem do Cloud Pub/Sub não seja exibida, clique em Atualizar.
Observação: você vai ter acesso às entradas de registro coletadas da função do Cloud. Os registros podem demorar alguns minutos para exibir a invocação da sua função.
  1. Também é possível conferir o feedback no Cloud Shell.

Tarefa 3: análise do código do aplicativo de estudo de caso

Nesta seção, você usará o editor de texto do Cloud Shell para analisar o código do aplicativo de estudo de caso.

Iniciar o editor do Cloud Shell

  1. No console do Cloud Platform, clique em Abrir editor.

Botão "Abrir editor" em destaque

Conferir a estrutura de código do aplicativo da função do Cloud

  1. Acesse a pasta cloudfunctions/start.
  2. Selecione o arquivo index.js na pasta ...function.
Observação: o arquivo contém o mesmo código que a amostra da janela "Cloud Functions" no console do Cloud. Porém, há uma diferença: como a função que você vai escrever retorna uma promessa, o argumento de callback foi omitido.
  1. Selecione o arquivo package.json.
Observação: esse arquivo contém as dependências necessárias para a execução da função. O Cloud Functions instala as dependências automaticamente.
  1. Selecione o arquivo languageapi.js.
Observação: o arquivo contém o código para processar textos de feedback e retornar a pontuação de sentimento da API Natural Language ML.
  1. Selecione o arquivo spanner.js.
Observação: esse arquivo contém o código para inserir um registro em um banco de dados do Cloud Spanner.

Tarefa 4: programação de uma função do Cloud

Nesta seção, você vai escrever um código para criar uma função do Cloud que recupera os dados de mensagens do Cloud Pub/Sub, invoca a API Natural Language ML para executar a detecção de sentimentos e insere um registro no Cloud Spanner.

Observação: atualize o código nas seções com as marcações a seguir.

// TODO

// END TODO

Para maximizar seu aprendizado, revise o código, os comentários inline e a documentação da API relacionada.

Escrever um código para modificar uma função do Cloud

  1. Volte para o arquivo ...function/index.js.
  2. Carregue os módulos languageapi e spanner. Esse módulos estão na mesma pasta que o arquivo index.js.
  3. No método subscribe(), depois do código que carrega a mensagem do Cloud Pub/Sub em um buffer, faça a conversão da mensagem do PubSub em um objeto de feedback fazendo a análise dele como dados JSON.
  4. Retorne uma promessa que invoca o método analyze do módulo languageapi para analisar o texto de feedback.
  5. Encadeie um método .then(...) no final da instrução de retorno.
  6. Forneça uma arrow function como o valor de callback.
  7. No corpo da arrow function, registre a pontuação de sentimento da API Natural Language no console.
  8. Adicione uma nova propriedade chamada "score" ao objeto de feedback.
  9. Complete o corpo da arrow function retornando o objeto de feedback.
  10. Encadeie um segundo método .then(...) no final do primeiro. Ele vai usar o módulo spanner para salvar o feedback.
  11. Escreva um terceiro método .then(...) encadeado, incluindo uma arrow function sem argumentos e um corpo vazio com o valor do callback.
  12. No corpo desse callback, registre uma mensagem para indicar que o feedback foi salvo e retorne a mensagem de sucesso.
  13. Adicione um manipulador .catch(...) ao final da cadeia, que registra a mensagem de erro no console.
Observação: sua função deve ficar parecida com esta.

function/index.js

// TODO: Load the ./languageapi module const languageAPI = require('./languageapi'); // END TODO // TODO: Load the ./spanner module const feedbackStorage = require('./spanner'); // END TODO exports.subscribe = function subscribe(event) { // The Cloud Pub/Sub Message object. // TODO: Decode the Cloud Pub/Sub message // extracting the feedbackObject data // The message received from Pub/Sub is base64 encoded, and // the data submitted by students is in a data property const pubsubMessage = Buffer.from(event.data, 'base64').toString(); let feedbackObject = JSON.parse(pubsubMessage); console.log('Feedback object data before Language API:' + JSON.stringify(feedbackObject)); // END TODO // TODO: Run Natural Language API sentiment analysis // The analyze(...) method expects to be passed the // feedback text from the feedbackObject as an argument, // and returns a Promise. return languageAPI.analyze(feedbackObject.feedback).then(score => { // TODO: Log the sentiment score console.log(`Score: ${score}`); // END TODO // TODO: Add new score property to feedbackObject feedbackObject.score = score; // END TODO // TODO: Pass feedback object to the next handler return feedbackObject; // END TODO }) // TODO: insert record .then(feedbackStorage.saveFeedback).then(() => { // TODO: Log and return success console.log('feedback saved...'); return 'success'; // END TODO }) // END TODO // TODO: Catch and Log error .catch(console.error); // End TODO };
  1. Salve o arquivo.

Gerar o pacote e implantar o código da função do Cloud

  1. Volte ao Cloud Shell e interrompa o web app pressionando Ctrl+C.
  2. Para mudar o diretório de trabalho para o código da função do Cloud, insira o comando a seguir:
cd function
  1. Para compactar os arquivos necessários para implantar a função, insira o comando a seguir:
zip cf.zip *.js* Observação: isso gera um arquivo zip chamado cf.zip que inclui todos os arquivos JavaScript e JSON na pasta.
  1. Para organizar o arquivo ZIP no Cloud Storage, insira o seguinte comando:
gcloud storage cp cf.zip gs://$GCLOUD_BUCKET/ Observação: isso copia o arquivo ZIP para o bucket do Cloud Storage que tem o nome baseado no ID do projeto e o sufixo -media.
  1. Para implantar a função do bucket do Cloud Storage, use o comando "gcloud functions deploy" da seguinte forma:
gcloud functions deploy process-feedback1 \ --gen2 \ --region={{{project_0.default_region|set at lab start}}} \ --source=gs://$GCLOUD_BUCKET/cf.zip \ --entry-point=subscribe \ --runtime=nodejs22 \ --trigger-topic=feedback Observação: a atualização da função process-feedback1 com o novo código que executa a análise de sentimento com a API Cloud Natural Language Machine Learning e insere dados no Cloud Spanner pode levar alguns minutos. Gerar o pacote e implantar o código da função do Cloud

Tarefa 5: teste do aplicativo de estudo de caso

Executar o web app

  1. Volte para a janela do Cloud Shell.
  2. Mude a pasta de trabalho para a pasta start do laboratório cloudfunctions:
cd ..
  1. Para iniciar o web app, execute o seguinte comando:
npm start
  1. Visualize o aplicativo da Web.
  2. Clique em Take Test.
  3. Clique em Places.
  4. Responda à pergunta.
  5. Insira um feedback e clique em Send Feedback.

Visualizar registros e monitoramento da função do Cloud

  1. Volte para a seção Cloud Run do console do Cloud Platform.
  2. Clique no nome da função, process-feedback1.
Observação: você terá acesso a um gráfico de monitoramento para invocações da função do Cloud. O gráfico pode demorar alguns minutos para exibir a invocação da sua função.
  1. Clique na guia Registros para visualizar.
  2. Para conferir seus dados na Análise de registros, clique no link no canto superior direito da página.
  3. Caso sua mensagem do Cloud Pub/Sub não seja exibida, clique em Atualizar.
  4. Atualize os registros de vez em quando até que as entradas informem que sua função foi executada.
Observação: você vai ter acesso às entradas de registro coletadas da função do Cloud. Nos registros, é possível conferir a pontuação da API Language. Pode levar alguns minutos para os registros exibirem a invocação da sua função.

Acessar os dados do Cloud Spanner

  1. No menu de navegação, clique em Ver todos os produtos e depois em Spanner.
  2. Selecione Instância do teste. Em "Bancos de dados", clique em quiz-database e, no painel à esquerda, clique em Spanner Studio.
  3. Execute a seguinte consulta:
SELECT * FROM Feedback Observação: você irá notar que um novo registro foi adicionado à tabela "Feedback".

Tarefa 6: (bônus): armazenamento das respostas de estudantes usando uma função do Cloud

Quando um estudante conclui um teste, as respostas são enviadas para o servidor em uma chamada de API. Sua tarefa é capturar as respostas dos estudantes e salvar as corretas no Cloud Spanner. Você vai ver que um novo registro foi adicionado à tabela "Feedback".

Para isso, siga estas etapas:

  1. Crie um tópico do Cloud Pub/Sub chamado "answers".
  2. Crie uma tabela do Cloud Spanner chamada "Answers" com nomes de colunas e tipos de dados apropriados.
  3. Poste os dados das respostas no tópico "answers".
  4. Assine o tópico de respostas no aplicativo do console e insira os dados das respostas na tabela "Answers".

Vamos deixar os detalhes para você decidir. Você encontra a solução na pasta bonus do laboratório.

Revisão:

Quais gatilhos podem ser usados com o Cloud Functions?
  • Cloud Pub/Sub
  • Cloud Spanner
  • Cloud Storage
  • HTTP

Com uma função do Cloud ativada pelo Cloud Pub/Sub, como a mensagem é enviada?
  • Codificação em Base64
  • Codificação em CSV
  • Arquivo compactado com tar e gzip
  • Arquivo ZIP

Qual é o tempo máximo de execução de uma função do Cloud?
  • 60 segundos
  • 540 segundos
  • Ilimitado

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

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

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.