Receba eventos através de mensagens Pub/Sub (CLI gcloud)
Este início rápido mostra como implementar um serviço do Cloud Run não autenticado que recebe eventos através do Pub/Sub.
Neste início rápido, vai:
Implemente um serviço de receção de eventos no Cloud Run.
Crie um acionador do Eventarc.
Publique uma mensagem num tópico do Pub/Sub para gerar um evento e vê-lo nos registos do Cloud Run.
Antes de começar
As restrições de segurança definidas pela sua organização podem impedir a conclusão dos seguintes passos. Para informações de resolução de problemas, consulte o artigo Desenvolva aplicações num ambiente Google Cloud restrito.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable run.googleapis.com
logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable run.googleapis.com
logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com - Atualize os componentes da CLI do Google Cloud:
gcloud components update
- Inicie sessão com a sua conta:
gcloud auth login
- Defina as variáveis de configuração usadas neste 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 for o criador do projeto, é-lhe atribuída a função básica de proprietário (
roles/owner
). Por predefinição, esta função do Identity and Access Management (IAM) inclui as autorizações necessárias para acesso total à maioria dos Google Cloud recursos e pode ignorar este passo.Se não for o criador do projeto, as autorizações necessárias têm de ser concedidas no projeto ao principal adequado. Por exemplo, um principal pode ser uma Conta Google (para utilizadores finais) ou uma conta de serviço (para aplicações e cargas de trabalho de computação). Para mais informações, consulte a página Funções e autorizações do destino de eventos.
Autorizações necessárias
Para receber as autorizações de que precisa para concluir este início rápido, peça ao seu administrador que lhe conceda as seguintes funções da IAM no seu projeto:
-
Administrador do Cloud Run (
roles/run.admin
) -
Eventarc Admin (
roles/eventarc.admin
) -
Aceder à vista de registos (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Publicador do Pub/Sub (
roles/pubsub.publisher
) -
Administrador da conta de serviço (
roles/iam.serviceAccountAdmin
) -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) -
Administrador de utilização de serviços (
roles/serviceusage.serviceUsageAdmin
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Administrador do Cloud Run (
- Se ativou o agente do serviço Cloud Pub/Sub a 8 de abril de 2021 ou antes, para suportar pedidos de envio autenticados do Pub/Sub, conceda a função de criador de tokens de conta de serviço (
roles/iam.serviceAccountTokenCreator
) ao agente do serviço. Caso contrário, esta função é concedida por predefinição:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Crie um acionador para ouvir mensagens do Pub/Sub:
Novo tópico do 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"
Esta ação cria um novo tópico Pub/Sub e um acionador para o mesmo denominado
events-pubsub-trigger
.Tópico do Pub/Sub existente
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 o seguinte:
PROJECT_ID
: o ID do seu Google Cloud projetoTOPIC_ID
: o ID do tópico do Pub/Sub existente
Esta ação cria um acionador denominado
events-pubsub-trigger
para o tópico Pub/Sub existente.Tenha em atenção que, quando cria um acionador do Eventarc pela primeira vez num projeto, pode haver um atraso no aprovisionamento do agente do serviço Eventarc. Google Cloud Normalmente, pode resolver este problema tentando criar o acionador novamente. Para mais informações, consulte o artigo Erros de acesso negado.
Confirme que o acionador foi criado com êxito:
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
.Encontre e defina o tópico 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 no tópico Pub/Sub para gerar um evento:
gcloud pubsub topics publish $RUN_TOPIC --message "Hello World!"
O evento é encaminhado para o serviço do Cloud Run, que regista a mensagem do evento.
Para ver as entradas de registo relacionadas com eventos criadas pelo seu serviço, execute o seguinte comando:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.pubsub.topic.v1.messagePublished"'
Procure uma entrada de registo semelhante a:
jsonPayload: ... message: 'Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World!'
Elimine o acionador do Eventarc.
Esta ação também elimina o tópico Pub/Sub associado.
Substitua PROJECT_NUMBER
pelo seu Google Cloud
número do projeto. Pode encontrar o número do projeto na página
Boas-vindas
da Google Cloud consola ou executando o seguinte comando:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Implemente um recetor de eventos no Cloud Run
Implemente um serviço do Cloud Run que receba e registe eventos através de uma imagem pré-criada, us-docker.pkg.dev/cloudrun/container/hello
:
gcloud run deploy helloworld-events-pubsub-quickstart \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--allow-unauthenticated
Quando vir o URL do serviço, a implementação está concluída.
Crie um acionador do Eventarc
O acionador de eventos envia mensagens para o serviço de receção de eventos implementado no Cloud Run quando uma mensagem é publicada no tópico do Pub/Sub.
Gere e veja um evento de tópico Pub/Sub
Pode gerar um evento do Eventarc publicando uma mensagem num tópico do Pub/Sub.
Parabéns! Implementou com êxito um serviço de receção de eventos no Cloud Run, criou um acionador do Eventarc, gerou um evento a partir do Pub/Sub e viu-o nos registos do Cloud Run.
Limpar
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou.
Pode:
Em alternativa, pode eliminar o seu Google Cloud projeto para evitar incorrer em custos. A eliminação do seu Google Cloud projeto interrompe a faturação de todos os recursos usados nesse projeto.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Se planeia explorar vários tutoriais e inícios rápidos, a reutilização de projetos pode ajudar a evitar exceder os limites de quota de projetos.