Receber eventos usando mensagens do Pub/Sub (CLI gcloud)
Neste guia de início rápido, mostramos como implantar um serviço não autenticado do Cloud Run (totalmente gerenciado) que recebe eventos usando o Pub/Sub.
Neste guia de início rápido, você fará as seguintes tarefas:
Implantar um serviço de receptor de eventos no Cloud Run
Criar um gatilho do Eventarc.
Publicar uma mensagem em um tópico do Pub/Sub para gerar um evento e visualizá-la nos registros do Cloud Run
Antes de começar
As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito do Google Cloud.
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Crie ou selecione um projeto do Google Cloud.
-
Crie um projeto do Google Cloud:
gcloud projects create PROJECT_ID
Substitua
PROJECT_ID
por um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto do Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud.
-
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, and Eventarc:
gcloud services enable run.googleapis.com
logging.googleapis.com cloudbuild.googleapis.com pubsub.googleapis.com eventarc.googleapis.com - Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Crie ou selecione um projeto do Google Cloud.
-
Crie um projeto do Google Cloud:
gcloud projects create PROJECT_ID
Substitua
PROJECT_ID
por um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto do Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud.
-
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, and Eventarc:
gcloud services enable run.googleapis.com
logging.googleapis.com cloudbuild.googleapis.com pubsub.googleapis.com eventarc.googleapis.com - Atualize os componentes da CLI do Google Cloud:
gcloud components update
- Faça login usando sua conta:
gcloud auth login
- Defina as variáveis de configuração usadas neste guia de início rápido:
gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
-
Se você for o criador do projeto, receberá o papel de proprietário básico (
roles/owner
). Por padrão, esse papel do gerenciamento de identidade e acesso (IAM) inclui as permissões necessárias para acesso total à maioria dos recursos do Google Cloud, e você pode pular esta etapa.Se você não é o criador do projeto, as permissões necessárias precisam ser concedidas ao principal apropriado. Por exemplo, um principal pode ser uma Conta do Google (para usuários finais) ou uma conta de serviço (para aplicativos e cargas de trabalho de computação). Para mais informações, consulte a página Papéis e permissões do destino do evento.
Permissões necessárias
Para conseguir as permissões necessárias para concluir o guia de início rápido, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto:
-
Editor do Cloud Build (
roles/cloudbuild.builds.editor
) -
Administrador do Cloud Run (
roles/run.admin
) -
Administrador do Eventarc (
roles/eventarc.admin
) -
Acessador de exibição de registros (
roles/logging.viewAccessor
) -
Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin
) -
Publicador do Pub/Sub (
roles/pubsub.publisher
) -
Administrador da conta de serviço (
roles/iam.serviceAccountAdmin
) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) -
Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin
) -
Administrador de armazenamento (
roles/storage.admin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
-
Editor do Cloud Build (
- Se você ativou o agente de serviço do Cloud Pub/Sub até 8 de abril de 2021, para oferecer suporte a solicitações push autenticadas do Pub/Sub, conceda o papel Criador de token da conta de serviço. (
roles/iam.serviceAccountTokenCreator
) à conta de serviço gerenciada pelo Google. Caso contrário, esse papel é concedido por padrão:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Substitua PROJECT_NUMBER
pelo número do projeto do
Google Cloud. Encontre o número do projeto na página Boas-vindas do console do Google Cloud ou executando o seguinte comando:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Implantar um receptor de eventos no Cloud Run
Implante um serviço do Cloud Run que recebe e registra eventos.
- Clone o repositório:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Mude para o diretório que contém o código de amostra do Cloud Run:
Node.js
cd nodejs-docs-samples/eventarc/pubsub/
Python
cd python-docs-samples/eventarc/pubsub/
Go
cd golang-samples/eventarc/pubsub/
Java
cd java-docs-samples/eventarc/pubsub/
Ruby
cd ruby-docs-samples/eventarc/pubsub/
C#
cd dotnet-docs-samples/eventarc/pubsub/
Crie o contêiner e faça upload dele para o Cloud Build:
gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/events-pubsub
Implante a imagem do contêiner no Cloud Run:
gcloud run deploy helloworld-events-pubsub-quickstart \ --image gcr.io/$(gcloud config get-value project)/events-pubsub \ --allow-unauthenticated
Quando você vir o URL do serviço, a implantação estará concluída.
Criar um gatilho do Eventarc
O gatilho de eventos envia mensagens para o serviço de receptor de eventos implantado no Cloud Run quando uma mensagem é publicada no tópico do Pub/Sub.
Crie um gatilho para detectar mensagens do Pub/Sub:
Novo tópico pub/sub
gcloud eventarc triggers create events-pubsub-trigger \ --destination-run-service=helloworld-events-pubsub-quickstart \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
Isso cria um novo tópico Pub/Sub e um gatilho para ele chamado
events-pubsub-trigger
.Tópico do Pub/Sub atual
gcloud eventarc triggers create events-pubsub-trigger \ --destination-run-service=helloworld-events-pubsub-quickstart \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID
Substitua:
PROJECT_ID
: o ID do projeto do Google CloudTOPIC_ID
: o ID do tópico do Pub/Sub atual
Isso cria um gatilho chamado
events-pubsub-trigger
para o tópico atual do Pub/Sub.Ao criar um gatilho do Eventarc pela primeira vez em um projeto do Google Cloud, pode haver um atraso no provisionamento do agente de serviço do Eventarc. Esse problema geralmente pode ser resolvido ao tentar criar o acionador novamente. Para mais informações, consulte Erros de permissão negada.
Confirme se o gatilho foi criado:
gcloud eventarc triggers list --location=us-central1
O
events-pubsub-trigger
está listado com um destino que é o serviço do Cloud Run,helloworld-events-pubsub-quickstart
.
Gerar e visualizar um evento de tópico do Pub/Sub.
É possível gerar um evento do Eventarc publicando uma mensagem em um tópico do Pub/Sub.
Encontre e defina o tópico do Pub/Sub como uma variável de ambiente:
export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \ --format='value(transport.pubsub.topic)')
Publique uma mensagem para o tópico do Pub/Sub a fim de gerar um evento:
gcloud pubsub topics publish $RUN_TOPIC --message "Runner"
O evento é encaminhado ao serviço do Cloud Run, que registra a mensagem do evento.
Para visualizar as entradas de registro relacionadas a eventos criadas pelo serviço, execute o seguinte comando:
gcloud logging read 'textPayload: "Hello, Runner!"'
Procure uma entrada de registro semelhante a esta:
"textPayload": "Hello, Runner! ID: 7479199264356846"
Parabéns! Você implantou com sucesso um serviço de receptor de eventos no Cloud Run, criou um gatilho do Eventarc, gerou um evento do Pub/Sub e o visualizou nos registros do Cloud Run.
Limpar
Ainda que o Cloud Run não gere custos quando o serviço não estiver em uso, é possível receber cobranças por armazenamento de imagem do contêiner no Container Registry, Recursos do Eventarc e Mensagens do Pub/Sub.
É possível excluir sua imagem, excluir o tópico do Pub/Sub e excluir a assinatura do Pub/Sub. Para excluir o gatilho do Eventarc:
gcloud eventarc triggers delete events-pubsub-trigger
Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Google Cloud interrompe o faturamento de todos os recursos usados no projeto.
Exclua um projeto do Google Cloud:
gcloud projects delete PROJECT_ID