Publique eventos a partir de uma fonte Google
Pode ativar a recolha e a publicação de eventos de origens Google. Para mais informações, consulte o artigo Publique eventos de origens Google.
Este início rápido mostra como publicar e receber mensagens de eventos criando um bus avançado do Eventarc e uma inscrição no seu projeto Google Cloud.
Um autocarro permite-lhe centralizar o fluxo de mensagens através do seu sistema e funciona como um router. Recebe mensagens de eventos de uma origem de mensagens ou publicadas por um fornecedor e avalia-as de acordo com uma inscrição.
Uma inscrição identifica uma subscrição de um barramento específico e define os critérios de correspondência para mensagens, fazendo com que sejam encaminhadas em conformidade para um ou mais destinos.
Neste início rápido, vai:
Implemente um serviço de receção de eventos no Cloud Run.
Crie um barramento avançado do Eventarc.
Ative eventos de origens Google.
Crie uma inscrição avançada do Eventarc.
Publique uma mensagem de evento no barramento criando um fluxo de trabalho.
Veja os dados de eventos nos registos do Cloud Run.
Pode concluir este guia de início rápido através da CLI gcloud.
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 Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows 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 artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.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 Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows 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 artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com - Atualize os componentes de
gcloud
:gcloud components update
- Inicie sessão com a sua conta:
gcloud auth login
- Defina a variável de configuração usada neste início rápido:
REGION=REGION
Substitua
REGION
por uma localização suportada para o autocarro, por exemplo,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).
Tenha em atenção que, por predefinição, as autorizações do Cloud Build incluem autorizações para carregar e transferir artefactos do Artifact Registry.
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:
-
Editor do Cloud Build (
roles/cloudbuild.builds.editor
) -
Administrador do Cloud Run (
roles/run.admin
) -
Eventarc Developer (
roles/eventarc.developer
) -
Eventarc Message Bus Admin (
roles/eventarc.messageBusAdmin
) -
Aceder à vista de registos (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
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
-
Editor de fluxos de trabalho (
roles/workflows.editor
)
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.
-
Editor do Cloud Build (
- Conceda as seguintes funções no projeto à
conta de serviço predefinida do
Compute Engine. Estas funções são necessárias quando cria e implementa a sua imagem de contentor:
- Gravador do Artifact Registry (
roles/artifactregistry.writer
): para carregar artefactos do Artifact Registry - Logs Writer
(
roles/logging.logWriter
): para escrever registos no Cloud Logging - Objeto de armazenamento
Utilizador (
roles/storage.objectUser
): para aceder a objetos do Cloud Storage
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/storage.objectUser
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)'
- Gravador do Artifact Registry (
- Por predefinição, apenas os proprietários do projeto, os editores do projeto e os administradores e invocadores do Cloud Run podem chamar serviços do Cloud Run.
- Para configurar a autenticação, conceda a função de invocador do Cloud Run (
- Crie uma conta de serviço. Para fins de teste, vai anexar esta conta de serviço a um pipeline avançado do Eventarc para representar a identidade do pipeline.
Substituagcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
por um nome para a sua conta de serviço. - Conceda a função de IAM à conta de serviço:
roles/run.invoker
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/run.invoker
run.invoker
) no seu Google Cloud projeto a uma conta de serviço:Tenha em atenção que pode configurar quem pode aceder ao seu serviço do Cloud Run de uma das seguintes formas:
- Conceda autorização a contas de serviço ou grupos selecionados para permitir o acesso ao serviço. Todos os pedidos têm de ter um cabeçalho de autorização HTTP que contenha um token do OpenID Connect assinado pela Google para uma das contas de serviço autorizadas. Esta é a forma como o acesso é configurado neste início rápido.
- Conceda autorização a
allUsers
para permitir o acesso não autenticado.
Para mais informações, consulte o artigo Controlo de acesso para o Cloud Run.
- Crie uma conta de serviço. Para fins de teste, vai anexar esta conta de serviço a um pipeline avançado do Eventarc para representar a identidade do pipeline.
Crie um repositório padrão do Artifact Registry para armazenar a imagem de contentor.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Substitua
REPOSITORY
por um nome exclusivo para o repositório do Artifact Registry, por exemplo,my-repo
.Clone o repositório do GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Altere para o diretório que contém o código de exemplo do Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
Crie uma imagem de contentor do Docker e envie a imagem para o seu repositório:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Implemente a imagem do contentor no Cloud Run:
gcloud run deploy SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --platform managed \ --ingress all \ --no-allow-unauthenticated \ --region=$REGION
Substitua
SERVICE_NAME
pelo nome do seu serviço, por exemplo,my-service
.Tenha em conta o seguinte:
A flag
--platform
define a plataforma de destino, neste caso, uma versão totalmente gerida do Cloud Run.A definição de entrada de
all
permite todos os pedidos, incluindo pedidos diretamente da Internet para o URLrun.app
. Para mais informações, consulte o artigo Restrinja a entrada de rede para o Cloud Run.A flag
--no-allow-unauthenticated
configura o serviço para permitir apenas invocações autenticadas.Quando vir o URL do serviço do Cloud Run, a implementação está concluída.
Copie e guarde o URL do serviço do Cloud Run, pois vai usá-lo num passo subsequente.
Crie um pipeline com o comando
gcloud eventarc pipelines create
:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Substitua o seguinte:
PIPELINE_NAME
: o ID do pipeline ou um nome totalmente qualificado, por exemplo,my-pipeline
.CLOUD_RUN_SERVICE_URL
: o URL totalmente qualificado do seu serviço do Cloud Run, por exemplo,https://SERVICE_NAME-abcdef-uc.a.run.app
. Este é o destino das mensagens de eventos.
Tenha em atenção que a chave
google_oidc_authentication_service_account
especifica um endereço de email da conta de serviço que é usado para gerar um token OIDC.Crie uma inscrição através do comando
gcloud eventarc enrollments create
:gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
Substitua o seguinte:
ENROLLMENT_NAME
: o ID da inscrição ou um nome totalmente qualificado, por exemplo,my-enrollment
.MATCH_EXPRESSION
: a expressão de correspondência para esta inscrição com IEC. Por exemplo, para publicar mensagens de eventos sempre que um fluxo de trabalho do Workflows é criado, use a seguinte expressão:"message.type == 'google.cloud.workflows.workflow.v1.created'"
No seu diretório principal, crie um novo ficheiro denominado
myWorkflow.yaml
.Copie e cole o seguinte fluxo de trabalho no novo ficheiro e, em seguida, guarde-o:
- getCurrentTime: call: http.get args: url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam result: currentTime - readWikipedia: call: http.get args: url: https://en.wikipedia.org/w/api.php query: action: opensearch search: ${currentTime.body.dayOfWeek} result: wikiResult - returnResult: return: ${wikiResult.body[1]}
Este fluxo de trabalho transmite o dia atual da semana como um termo de pesquisa à API Wikipedia. É devolvida uma lista de artigos relacionados da Wikipédia.
Implemente o fluxo de trabalho e associe-o à conta de serviço especificada através do comando
gcloud workflows deploy
:gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Filtre as entradas do registo e devolva a saída através do comando
gcloud logging read
:gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
Procure uma entrada de registo semelhante à seguinte:
insertId: 689644c30004cde066603b3a labels: instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-08-08T18:41:07.632226222Z' resource: labels: ... type: cloud_run_revision textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created' timestamp: '2025-08-08T18:41:07.314848Z'
Elimine recursos avançados do Eventarc:
Implemente um serviço de receção de eventos no Cloud Run
Implemente um serviço do Cloud Run como um destino de eventos que regista o conteúdo de um evento. São suportados outros destinos de eventos, como um tópico do Pub/Sub, fluxos de trabalho ou um ponto final HTTP. Para mais informações, consulte o artigo Fornecedores e destinos de eventos.
Crie um bus avançado do Eventarc
Um barramento recebe mensagens de eventos de uma origem de mensagens ou publicadas por um fornecedor e funciona como um router de mensagens.
Para mais informações, consulte o artigo Crie um autocarro para encaminhar mensagens.
Crie um bus avançado do Eventarc no seu projeto através do comando
gcloud eventarc message-buses create
:
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
Substitua BUS_NAME
pelo ID do seu autocarro ou por um nome totalmente qualificado, por exemplo, my-bus
.
Ative eventos de origens Google
Para publicar eventos de origens Google, tem de criar um recurso
GoogleApiSource
. Este recurso representa uma subscrição de eventos da API Google para um
determinado barramento avançado do Eventarc num Google Cloud projeto e numa
região específicos.
Ative eventos de origens Google através do comando
gcloud eventarc google-api-sources create
:
gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=PROJECT_ID \ --location=$REGION
Substitua GOOGLE_API_SOURCE_NAME
pelo ID do recurso GoogleApiSource
ou por um nome totalmente qualificado, por exemplo, my-google-api-source
.
Todos os tipos de eventos Google suportados enviados diretamente a partir de uma origem Google são agora recolhidos e publicados no seu bus.
Crie uma inscrição avançada do Eventarc
Uma inscrição determina as mensagens que são encaminhadas para um destino e também especifica o pipeline usado para configurar um destino para as mensagens de eventos.
Para mais informações, consulte o artigo Crie uma inscrição para receber eventos.
Quando usa a CLI gcloud, primeiro cria um pipeline e, em seguida, cria uma inscrição:
Publicar uma mensagem de evento no barramento criando um fluxo de trabalho
O Workflows é uma plataforma de orquestração totalmente gerida que executa serviços numa ordem que define: um fluxo de trabalho. Crie um fluxo de trabalho para gerar um tipo de evento compatível a partir de uma origem Google.
Veja os dados de eventos nos registos do Cloud Run
Depois de publicar um evento no barramento avançado do Eventarc, pode verificar os registos do seu serviço do Cloud Run para confirmar que o evento foi recebido conforme esperado.
Criou com êxito um barramento avançado do Eventarc e uma inscrição, ativou a publicação de eventos de origens Google, criou um fluxo de trabalho para gerar um tipo de evento suportado a partir de um fornecedor Google e, em seguida, validou o resultado esperado nos registos do serviço de receção de eventos.
Limpar
Quando concluir as tarefas descritas neste início rápido, pode evitar a faturação contínua eliminando os recursos que criou:
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