Instruções e requisitos de configuração do laboratório
Proteja sua conta e seu progresso. Sempre use uma janela anônima do navegador e suas credenciais para realizar este laboratório.

Como usar o Cloud Pub/Sub com o Cloud Run [APPRUN]

Laboratório 1 hora 15 minutos universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Este conteúdo ainda não foi otimizado para dispositivos móveis.
Para aproveitar a melhor experiência, acesse nosso site em um computador desktop usando o link enviado a você por e-mail.

Visão geral

O Pub/Sub permite que os aplicativos usem filas de mensagens de modo eficiente. O serviço é compatível com vários serviços do Google Cloud. Neste laboratório, você vai aprender a integrar o Pub/Sub ao Cloud Run.

O laboratório se baseia na resolução de um caso de uso do cliente com uma infraestrutura sem servidor. O laboratório tem três seções detalhadas que resolvem um problema técnico:

  • Visão geral do cenário
  • Análise de requisitos
  • Como desenvolver um produto mínimo viável

Objetivos

Neste laboratório, você vai aprender a:

  • Ativar a API Cloud Run.
  • Implantar microsserviços no Cloud Run.
  • Criar um tópico do Pub/Sub.
  • Invocar um serviço do Cloud Run de uma assinatura do Pub/Sub.

Pré-requisitos

É necessário ter um conhecimento intermediário no Google Cloud para realizar esses laboratórios. Embora as etapas necessárias sejam abordadas, é importante conhecer os seguintes produtos:

  • Pub/Sub
  • Cloud Run

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 Google Skills 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.

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

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

    Painel de credenciais

  2. 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.
  3. Na página "Escolha uma conta", clique em Usar outra conta. A página de login abre.

    Caixa de diálogo "Escolha uma conta" com a opção "Usar outra conta" destacada

  4. 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 Skills. Caso tenha sua própria conta do Google Cloud, não a use para este laboratório (isso evita cobranças).
  1. 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 sem custo financeiro.

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. Menu do console do Cloud

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 .

Visão geral do cenário

Logotipo da Critter Junction

Neste laboratório, você vai ajudar a equipe de desenvolvimento da Critter Junction a usar o Pub/Sub para os requisitos que ela precisa. A equipe quer saber como realizar o processamento eficiente de filas nos aplicativos da empresa.

Análise de requisitos

A equipe da Critter Junction tem um aplicativo público da Web e vários microsserviços criados no Google Cloud. A comunicação entre eles é essencial e precisa de uma forma robusta de troca de mensagens entre os componentes de aplicativo.

Houve problemas nas tentativas anteriores da equipe de desenvolvimento porque os microsserviços precisavam trocar muita informação entre eles (acoplamento alto). Além disso, se um serviço estivesse temporariamente indisponível, as mensagens seriam perdidas.

A equipe precisa de uma solução que tenha uma boa resiliência, e que não dependa de serviço adicionais (baixo acoplamento) nos sistemas. Agora que você já sabe um pouco mais sobre a Critter Junction e os problemas que ela enfrenta. Tente priorizar os principais critérios para uma solução.

Definir prioridades da Critter Junction

As conversas iniciais com as partes interessadas da Critter Junction servem para determinar as prioridades e os casos de uso. Os resultados das conversas são mostrados abaixo:

Ref

História do usuário

1

Como desenvolvedor principal, você precisa garantir que as mensagens sejam resilientes. Desse modo, a operação do serviço precisa ser restaurada sem precisar de intervenção manual.

2

Como gerente de programas, você quer que os serviços sejam capazes de escalonar de maneira integrada. Assim, a carga transacional adicional não deve ocasionar instabilidades no sistema.

3

Como líder de operações, você quer que os serviços sejam gerenciados. Desse modo, a equipe não vai precisar ser realocada de trabalhos importantes de manutenção.

Em uma conversa com os líderes de equipe, as seguintes tarefas de alto nível foram definidas:

Ref

Definição de conclusão

1

Estabelecer um componente assíncrono para comunicação entre os serviços.

2

Implementar e comprovar a escalonabilidade da solução.

3

Os serviços precisam ser executados sem supervisão.

A equipe da Critter Junction precisa de uma solução que possa ser implementada rapidamente. Considerando os requisitos, a equipe de desenvolvimento reduz as opções a:

  • Pub/Sub
  • Cloud Tasks

Consulte Pub/Sub ou Cloud Tasks para saber mais.

Produto

Caso de uso

Escolha

Pub/Sub

"Ideal para padrões de ingestão e distribuição de dados de eventos mais gerais, em que o controle sobre a execução pode ser reduzido."

marca de seleção verde

Cloud Tasks

"Adequado para casos de uso em que um produtor de tarefas precisa adiar ou controlar o tempo de execução de um webhook específico ou de uma chamada de procedimento remoto."

marca de seleção vermelha

Depois de analisar os requisitos, a equipe de desenvolvimento escolhe o Pub/Sub porque só precisa de um padrão de distribuição em push. O diagrama da arquitetura de alto nível a seguir mostra o produto viável mínimo (MVP, na sigla em inglês) que eles precisam investigar.

O diagrama de arquitetura do MVP

Na solução proposta, o Pub/Sub será usado para tratar mensagens assíncronas entre os serviços.

Tarefa 1: verificar se a API Pub/Sub está ativa

Para ter acesso à API necessária, reative a API Pub/Sub.

  1. No Menu de navegação (navmenu) do console do Google Cloud, em APIs e serviços, clique em Biblioteca.

  2. Na caixa Pesquisar, digite Pub/Sub

  3. Clique no resultado para API Cloud Pub/Sub.

  4. Clique em Gerenciar.

  5. Clique em Desativar API. Se for necessário confirmar, clique em Desativar.

  6. Se aparecer a mensagem Do you want to disable Cloud Pub/Sub API and its dependent APIs?, clique em Confirmar.

  7. Para reativar a API, clique em Ativar.

    A página vai mostrar informações sobre a API quando ela for reativada. Página de visão geral da API Pub/Sub

Tarefa 2: desenvolver um produto mínimo viável (MVP)

A Critter Junction tem vários serviços do Cloud Run que precisam ser integrados ao Pub/Sub. Para criar um MVP, você precisa fazer o seguinte:

  • Implantar um serviço de produtor
  • Implantar um serviço de consumidor
  • Criar uma conta de serviço
  • Criar um tópico do Pub/Sub

Implantar um serviço de produtor

A Critter Junction especifica que o serviço de repositório com contato externo deve ser configurado como um endpoint público, com estes requisitos:

Tipo

Permissão

Descrição

Acesso ao URL

--allow-unauthenticated

Define o serviço como PUBLIC (usuários não autenticados podem vê-lo).

Invocar permissão

allUsers

Permite que o serviço seja invocado/acionado por qualquer pessoa.

O serviço de repositório do produtor aceita conexões da Internet pública para pedidos de compra. Para isso, o serviço não poderá exigir autenticação e poderá ser acionado por qualquer pessoa.

As informações coletadas pelo serviço serão transmitidas aos serviços de consumidor de back-end.

Configure e implante o serviço de repositório no Cloud Run. Execute os seguintes comandos no Cloud Shell:

  1. Ative a API Cloud Run e configure seu ambiente shell

    gcloud services enable run.googleapis.com
  2. Crie uma variável de ambiente chamada "LOCATION":

    LOCATION={{{project_0.default_region|REGION}}}
  3. Defina a região de computação:

    gcloud config set compute/region $LOCATION
  4. Implante o serviço de repositório

gcloud run deploy store-service \ --image gcr.io/qwiklabs-resources/gsp724-store-service \ --region $LOCATION \ --allow-unauthenticated

Clique em Verificar meu progresso para conferir o objetivo. Implantar o serviço de repositório do Cloud Run

Após o serviço do repositório ser implantado, ele vai ficar acessível publicamente na Internet.

Implantar um serviço de consumidor

A equipe de desenvolvimento também precisa configurar o serviço de pedidos, que pode ser acessado em um endpoint particular. Ao contrário do serviço de repositório, o serviço de pedido não deve ficar acessível publicamente na Internet e só deve ser invocado por uma conta com as permissões adequadas.

Para usar os serviços no Cloud Run, você precisa das seguintes configurações:

Tipo

Permissão

Descrição

Acesso ao URL

--no-allow-unauthenticated

Define o serviço como PRIVATE (apenas usuários autenticados podem vê-lo).

Invocar papel/permissão

Invocador do Cloud Run

Permite que o serviço seja invocado apenas por uma conta com o papel de invocador do Cloud Run.

Configure e implante o serviço de pedidos:

gcloud run deploy order-service \ --image gcr.io/qwiklabs-resources/gsp724-order-service \ --region $LOCATION \ --no-allow-unauthenticated

Clique em Verificar meu progresso para conferir o objetivo. Implantar o serviço de pedidos do Cloud Run

Assim, somente contas autenticadas podem acessar e invocar o serviço.

Visão geral do Pub/Sub

O Pub/Sub é um serviço de mensagens assíncronas. Ele separa os serviços que produzem dos que processam eventos.

Conceitos principais do Pub/Sub:

  • Tópico
  • Assinatura
  • Mensagem
  • Atributo da mensagem

O Pub/Sub exige que algumas opções sejam concluídas antes da implantação. No console do Google Cloud, você pode acessar o Pub/Sub na opção de "Big Data".

Campo

Descrição

Tópico

Um recurso nomeado para o qual os editores enviam mensagens.

Assinatura

Um recurso nomeado que representa o fluxo de mensagens de um determinado tópico a ser entregue para o aplicativo assinante. Para mais detalhes sobre assinaturas e a semântica da entrega de mensagens, consulte o Guia do assinante.

Mensagem

A combinação de dados e atributos (opcionais) que um editor envia para um tópico, sendo posteriormente entregue aos assinantes.

Atributo da mensagem

Um par de chave-valor que um editor pode definir para uma mensagem. Por exemplo, a chave iana.org/language_tag e o valor en podem ser adicionados às mensagens para marcá-las como legíveis por um assinante que fale inglês.

O Pub/Sub pode ser usado em uma variedade de casos. Confira os mais comuns abaixo:

Caso de uso

Exemplo

Balancear cargas de trabalho em clusters de rede.

Por exemplo, uma fila de tarefas grande pode ser distribuída com eficiência entre vários funcionários, como as instâncias do Google Compute Engine.

Implementar fluxos de trabalho assíncronos

Por exemplo, um aplicativo pode incluir um pedido em um tópico, que pode ser processado por um ou mais funcionários.

Distribuir notificações de eventos

Por exemplo, um serviço que aceita cadastros de usuários pode enviar notificações sempre que um novo usuário se registra, e outros serviços podem se inscrever para receber as notificações do evento.

Atualizar caches distribuídos

Um aplicativo pode publicar eventos de invalidação para atualizar os códigos de objetos que foram alterados.

Login em vários sistemas

Uma instância do Google Compute Engine pode gravar registros no sistema de monitoramento, em um banco de dados para consultas futuras e assim por diante.

Fazer streaming de dados de vários processos ou dispositivos.

Um sensor residencial que pode enviar dados para servidores de back-end hospedados na nuvem.

Melhorar a confiabilidade

Um serviço do Compute Engine de uma única zona pode operar em outras ao assinar um tópico em comum para se recuperar de falhas em uma zona ou região.

Tarefa 3: implantar o Pub/Sub

Agora que os serviços de produtor (store service) e consumidor (order service) foram implantados, vamos nos dedicar aos principais recursos do Pub/Sub. Para usar o Pub/Sub é preciso duas atividades:

  • Criar um tópico
  • Criar uma assinatura

Criar um tópico

Quando um evento assíncrono (push) é criado em um tópico, os aplicativos que assinam o tópico podem processar as mensagens associadas. O processamento de eventos push com o Pub/Sub oferece uma maneira escalonável de lidar com as mensagens no Google Cloud.

O novo tópico do Pub/Sub terá os seguintes valores.

Campo

Valor

Nome

ORDER_PLACED

Criptografia

Chave gerenciada pelo Google

  1. Crie um tópico no Pub/Sub:
gcloud pubsub topics create ORDER_PLACED Observação: as mensagens enviadas com o Pub/Sub são codificadas como base64 na transmissão e precisam ser decodificadas no recebimento.

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

Ao criar o tópico do Pub/Sub, as mensagens são armazenadas e entregues de forma independente e resiliente.

Você vai criar uma assinatura em uma tarefa posterior.

Tarefa 4: criar uma conta de serviço

Para entregar uma mensagem do Pub/Sub a um serviço do Cloud Run, você precisa de uma assinatura do Pub/Sub. A assinatura precisa invocar o serviço usando uma conta de serviço com as permissões corretas. Neste laboratório, o serviço de pedido do consumidor será invocado por uma assinatura que usa a conta de serviço.

Para isso, as seguintes atividades são necessárias:

  • Criar uma conta de serviço
  • Vincular as permissões do papel de invocador à conta de serviço

Criação de conta de serviço

Crie uma conta de serviço que forneça acesso autenticado.

  1. Crie uma conta de serviço chamada Order Initiator:

    gcloud iam service-accounts create pubsub-cloud-run-invoker \ --display-name "Order Initiator"
  2. Confirme a criação da conta de serviço:

    gcloud iam service-accounts list --filter="Order Initiator"

Clique em Verificar meu progresso para conferir o objetivo.

Criar uma conta de serviço

Aqui, a conta de serviço Order Initiator está disponível. No entanto, ela não tem um papel ou permissões. Para atribuir permissões do IAM, aplique ou vincule as permissões de papel à conta de serviço.

Vincular permissões de papel

Para vincular as permissões a uma conta usada para invocar um serviço no Cloud Run, você precisa das seguintes informações:

Categoria

Descrição

Nome do serviço

O nome do serviço implantado a ser invocado.

Membro

A conta que vai receber as permissões do papel.

Região

A região em que o serviço foi implantado.

Plataforma

O tipo de plataforma (Cloud Run gerenciado, Cloud Run for Anthos ou Cloud Run for VMware)

  1. Vincule a conta de serviço ao papel Cloud Run Invoker no serviço de pedidos:

    gcloud run services add-iam-policy-binding order-service --region $LOCATION \ --member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \ --role=roles/run.invoker --platform managed

    A nova conta de serviço agora tem permissões para invocar um serviço do Cloud Run.

  2. Crie uma variável de ambiente para armazenar o número do projeto:

    PROJECT_NUMBER=$(gcloud projects list \ --filter="qwiklabs-gcp" \ --format='value(PROJECT_NUMBER)')
  3. Ative a conta de serviço do projeto para criar tokens:

    gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \ --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator

Tarefa 5: criar uma assinatura no Pub/Sub

Nesta tarefa, você vai criar e configurar a assinatura do Pub/Sub para usar a nova conta de serviço.

  1. Crie uma variável de ambiente para armazenar o endpoint do serviço de pedidos:

    ORDER_SERVICE_URL=$(gcloud run services describe order-service \ --region $LOCATION \ --format="value(status.address.url)")
  2. Crie uma assinatura e vincule-a ao serviço de pedidos:

    gcloud pubsub subscriptions create order-service-sub \ --topic ORDER_PLACED \ --push-endpoint=$ORDER_SERVICE_URL \ --push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com

Clique em Verificar meu progresso para conferir o objetivo. Criar uma assinatura

Tarefa 6: testar o aplicativo

Para testar o aplicativo, envie um exemplo de payload JSON para o serviço do repositório.

  1. Crie um arquivo chamado test.json com o seguinte conteúdo. Use o editor que preferir, como o nano, vi ou o editor do Cloud Shell.

    { "billing_address": { "name": "Kylie Scull", "address": "6471 Front Street", "city": "Mountain View", "state_province": "CA", "postal_code": "94043", "country": "US" }, "shipping_address": { "name": "Kylie Scull", "address": "9902 Cambridge Grove", "city": "Martinville", "state_province": "BC", "postal_code": "V1A", "country": "Canada" }, "items": [ { "id": "RW134", "quantity": 1, "sub-total": 12.95 }, { "id": "IB541", "quantity": 2, "sub-total": 24.5 } ] }
  2. Crie uma variável de ambiente para armazenar o endpoint do serviço de repositório:

    STORE_SERVICE_URL=$(gcloud run services describe store-service \ --region $LOCATION \ --format="value(status.address.url)")
  3. Para testar a comunicação entre os microsserviços e gerar um ID de pedido, poste uma mensagem no serviço de repositório:

    curl -X POST -H "Content-Type: application/json" -d @test.json $STORE_SERVICE_URL

    O resultado do comando indica que um pedido foi criado e deve ser semelhante a:

    {"status":"success","order_id":"6pa5mmh"}

Serviço de repositório

O serviço de repositório (endpoint público) usa o Pub/Sub para transmitir informações ao serviço de pedidos (endpoint particular).

  1. No Menu de navegação (navmenu) do console do Google Cloud, clique em Cloud Run.

  2. Clique no link para o store-service.

  3. Para visualizar os registros de serviço, clique em Registros. Verifique os registros do serviço de repositório para visualizar o ID do pedido gerado.

  4. Adicione o filtro de registros ORDER ID para ver o ID gerado pelo serviço de repositório.

    Página com a guia "Registros" que mostra o ID do pedido gerado

Serviço de pedido

O serviço de pedido recebe uma mensagem do serviço de repositório transmitida com o Pub/Sub.

  1. Confira os registros do serviço de pedidos para confirmar se os dados JSON foram transferidos corretamente.

  2. Adicione o filtro de registros Order Placed para ver o ID do pedido gerado que foi transmitido ao serviço de pedido.

    Página com a guia "Registros" que mostra o ID do pedido gerado

A Critter Junction atualizou a solução para usar o Pub/Sub. O diagrama de arquitetura de alto nível a seguir resume a solução implantada.

Diagrama da arquitetura

Você implantou o Pub/Sub no Google Cloud para se comunicar de forma assíncrona entre os serviços do Cloud Run.

Parabéns!

Neste laboratório, você aprendeu a integrar serviços do Cloud Run com o Pub/Sub na sua infraestrutura do Google Cloud. Você aprendeu a:

  • Implantar serviços no Cloud Run
  • Criar uma conta de serviço com o papel e as permissões apropriados
  • Definir um tópico do Pub/Sub
  • Vincular uma assinatura do Pub/Sub a uma conta de serviço

Próximas etapas / Saiba mais

Assista a série de vídeos Serverless Expeditions para saber como usar esses produtos no seu projeto.

Manual atualizado em 20 de fevereiro de 2024

Laboratório testado em 20 de fevereiro de 2022

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

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.