Neste tutorial, mostramos como implantar um serviço autenticado do Cloud Run que recebe eventos do Cloud Storage usando os registros de auditoria do Cloud. Use este tutorial para implantar cargas de trabalho de produção. O gatilho Eventarc filtra eventos com base nas entradas de registros de auditoria do Cloud. Para mais informações, consulte Determinar filtros de evento para registros de auditoria do Cloud.
Conclua este tutorial usando o Console do Google Cloud ou a Google Cloud CLI.
Objetivos
Com este tutorial, você vai:
Criar um bucket do Cloud Storage para ser a origem do evento.
Implantar um serviço de receptor de eventos no Cloud Run
Criar um gatilho do Eventarc.
Gerar um evento fazendo upload de um arquivo no bucket do Cloud Storage e visualizá-lo nos registros do Cloud Run.
Custos
Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
Algumas das etapas deste documento podem não funcionar corretamente se sua organização aplicar restrições ao ambiente do Google Cloud. Nesse caso, talvez não seja possível concluir tarefas como criar endereços IP públicos ou chaves de contas de serviço. Se você fizer uma solicitação que retorne um erro sobre restrições, veja como 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.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs Cloud Build, Logging, Pub/Sub, Cloud Run, Eventarc.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs Cloud Build, Logging, Pub/Sub, Cloud Run, Eventarc.
- Conclua as seguintes etapas para o console ou
a CLI gcloud:
: Console
-
No console, acesse a página Contas de serviço.
Acessar Contas de serviço - Clique em Criar conta de serviço.
-
Insira um nome de conta de serviço a ser exibido no console.
O console gerará um ID de conta de serviço com base nesse nome. Edite o ID se for necessário. Não será possível alterar o ID depois.
- Opcional: digite uma descrição da conta de serviço.
-
Se você não quiser definir controles de acesso agora, clique em Concluído para terminar a criação da conta de serviço.
Para definir os controles de acesso agora, clique em Criar e continuar e avance para a próxima etapa.
- Escolha os papéis de gerenciamento de identidade e acesso
Cloud Run Invoker
eEventarc Event Receiver
para conceder à conta de serviço no projeto. - Quando terminar de adicionar papéis, clique em Continuar e Concluído para terminar de criar a conta de serviço.
- Para conceder papéis do IAM a um principal, faça o seguinte:
No console, acesse a página IAM.
Acessar IAM- Encontre a linha que contém o endereço de e-mail USER_EMAIL, clique em Editar principal nessa linha e clique em Adicionar outra .
- Na lista suspensa, adicione os papéis
Eventarc Admin
eService Account User
. - Clique em Save. O principal recebe os papéis de gerenciamento de identidade e acesso no recurso.
gcloud
- Atualize os componentes
gcloud
:gcloud components update
- Faça login usando sua conta:
gcloud auth login
- Defina as variáveis de configuração usadas neste tutorial:
gcloud config set project PROJECT_ID gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
Substitua PROJECT_ID pelo código do projeto.
- Ative os tipos de registro Leitura de administradores, Leitura de dados e Gravação de dados nos registros de auditoria do Cloud no Google Cloud Storage: Acessar os registros de auditoria do Cloud
- Crie uma conta de serviço para o projeto:
gcloud iam service-accounts create sample-service-account \ --description="A sample service account" \ --display-name="Sample service account"
Depois de criar uma conta de serviço, pode levar até sete minutos para que você possa usá-la. Se você tentar usar imediatamente uma conta de serviço depois de criá-la e receber um erro, aguarde pelo menos 60 segundos e tente novamente. - Para confirmar se a
sample-service-account
foi criada, execute:gcloud iam service-accounts list
A saída será semelhante a:DISPLAY NAME EMAIL DISABLED Default compute service account PROJECT_NUMBER-compute@developer.gserviceaccount.com False Sample service account sample-service-account@PROJECT_ID.iam.gserviceaccount.com False
- Conceda os papéis a seguir à conta de serviço:
run.invoker
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/run.invoker"
Substitua
PROJECT_ID
pelo ID do projeto do Google Cloud.eventarc.eventReceiver
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/eventarc.eventReceiver"
Substitua
PROJECT_ID
pelo ID do projeto do Google Cloud. - Conceda os seguintes papéis do IAM ao usuário:
eventarc.admin
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="PRINCIPAL" \ --role='roles/eventarc.admin'
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google CloudPRINCIPAL
: uma identidade válida à qual você quer conceder o papel.- E-mail da Conta do Google:
user:test-user@gmail.com
- Grupo do Google:
group:admins@example.com
- Conta de serviço:
serviceAccount:test123@example.domain.com
- Domínio do Google Workspace ou Cloud Identity:
domain:example.domain.com
Exemplo:
- E-mail da Conta do Google:
iam.serviceAccountUser
gcloud iam service-accounts add-iam-policy-binding \ sample-service-account@PROJECT_ID.iam.gserviceaccount.com \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Substitua os seguintes valores:
PROJECT_ID
: o ID do projeto do Google CloudPRINCIPAL
: uma identidade válida à qual você quer conceder o papel.- E-mail da Conta do Google:
user:test-user@gmail.com
- Grupo do Google:
group:admins@example.com
- Conta de serviço:
serviceAccount:test123@example.domain.com
- Domínio do Google Workspace ou Cloud Identity:
domain:example.domain.com
Exemplo:
- E-mail da Conta do Google:
- Faça o download e instale a ferramenta de gerenciamento de código-fonte git.
-
crie um bucket do Cloud Storage
Este tutorial usa o Cloud Storage como origem do evento. Para criar um bucket de armazenamento:
Console
- Acesse o Cloud Storage no console.
- Clique em Criar bucket.
- Insira as informações do bucket e clique em Continuar para concluir cada etapa:
- Insira um nome exclusivo. Por exemplo,
eventarcbucket
. - Selecione Região como o Tipo de local.
- Selecione us-central1 (Iowa) como o Local.
- Selecione Padrão na classe de armazenamento padrão.
- Selecione Uniforme para Controle de acesso.
- Insira um nome exclusivo. Por exemplo,
- Clique em Criar.

gcloud
gsutil mb -l us-central1 gs://events-tutorial-PROJECT_ID/
Depois que a origem do evento é criada, implante o serviço de receptor de eventos no Cloud Run.
Implantar o serviço de receptor de eventos no Cloud Run
Implante um serviço do Cloud Run que recebe e registra eventos. Para implantar o serviço de receptor de eventos de amostra:
Console
- Para clonar o repositório de exemplo na sua conta do GitHub, siga estas instruções:
- No GitHub, acesse GoogleCloudPlatform/golang-samples.
- Clique em Bifurcar.
- Se solicitado, selecione o local em que você quer clonar o repositório.
- No GitHub, acesse GoogleCloudPlatform/java-docs-samples.
- Clique em Bifurcar.
- Se solicitado, selecione o local em que você quer clonar o repositório.
- No GitHub, acesse GoogleCloudPlatform/dotnet-docs-samples.
- Clique em Bifurcar.
- Se solicitado, selecione o local em que você quer clonar o repositório.
- No GitHub, acesse GoogleCloudPlatform/nodejs-docs-samples.
- Clique em Bifurcar.
- Se solicitado, selecione o local em que você quer clonar o repositório.
- No GitHub, acesse GoogleCloudPlatform/python-docs-samples.
- Clique em Bifurcar.
- Se solicitado, selecione o local em que você quer clonar o repositório.
- Acesse o Cloud Run no console.
- Clique em Criar serviço para exibir o formulário Criar serviço.
- Selecione Implantar continuamente novas revisões de um repositório de código-fonte.
- Clique em Configurar com o Cloud Build para abrir o formulário Configurar com o Cloud Build.
- Se solicitado, ative a API Cloud Build e a API Container Analysis.
- Selecione GitHub como Repositório do repositório.
- Se solicitado, clique em Instalar o Google Cloud Build.
- Selecione o repositório do GitHub que você bifurcou como Repositório.
- Clique em Next.
- No campo Ramificação, digite
^master$
. - Selecione Dockerfile como o Tipo de build e forneça o local de origem
do Dockerfile:
eventarc/audit-storage/Dockerfile
oueventarc/audit_storage/Dockerfile
(Go) - Clique em Save.
- No formulário Criar serviço, digite o nome do serviço.
Por exemplo,
helloworld-events
. - Selecione us-central1(Iowa) como a Região em que o serviço estará localizado.
- Clique em Next.
- Na seção Configure como este serviço é acionado:
- Selecione qualquer uma das opções de Entrada com base no tráfego de entrada que você quer permitir no serviço do Cloud Run.
- Selecione Exigir autenticação.
- Opcionalmente, clique em Criar um gatilho do Eventarc. Adicionar gatilho do Eventarc e crie um gatilho ou crie um gatilho após criar um serviço. Para mais informações sobre como criar um gatilho, consulte
- Clique em Criar.
Go

Java

.NET

Node.js

Python



No formulário Configurar com o Cloud Build:
gcloud
- Clone o repositório:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
.NET
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
- Crie o contêiner e faça upload dele para o Cloud Build:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld-events
- Implante a imagem do contêiner no Cloud Run:
gcloud run deploy helloworld-events \ --image gcr.io/PROJECT_ID/helloworld-events
No prompt para permitir invocações não autenticadas, digite
n
.Quando a implantação for bem-sucedida, a linha de comando exibirá o URL de serviço.
Agora que você implantou o serviço de receptor de eventos chamado
helloworld-events
no Cloud Run, configure o gatilho.
Criar um gatilho do Eventarc
O gatilho do Eventarc envia eventos do bucket do Cloud Storage para o serviço "helloworld-events" do Cloud Run.
Console
- Acesse o Cloud Run no console.
- Na lista de serviços, clique no serviço que você criou para acessar a página Detalhes do serviço.
- Clique na guia Gatilhos e clique em Adicionar gatilho.
- Na lista suspensa Escolha um evento, selecione Cloud Storage > storage.objects.create.
- Para ativar os tipos de registro de auditoria necessários para
storage.googleapis.com
, clique em Ativar todos. - No campo Receber eventos de, selecione Região única e, em seguida, selecione us-central1 como a região para receber eventos.
- Se solicitado, conceda o papel
eventarc.eventReceiver
à conta de serviço do Compute Engine e à funçãoiam.serviceAccountTokenCreator
à conta de serviço do Pub/Sub. - Selecione a conta de serviço que você criou. Por exemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
- Clique em Save.
gcloud
- Crie um gatilho que filtre eventos do Cloud Storage e que use a conta de serviço que você criou:
gcloud eventarc triggers create events-tutorial-trigger \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --service-account=sample-service-account@PROJECT_ID.iam.gserviceaccount.com
SubstituaPROJECT_ID
pelo ID do projeto do Google Cloud. Isso cria um gatilho chamadoevents-tutorial-trigger
. - Para confirmar se
events-tutorial-trigger
foi criado, execute:gcloud eventarc triggers list --location=us-central1
events-tutorial-trigger
é exibido listado com um destino de
helloworld-events
.
Gerar e visualizar um evento
- Para gerar um evento:
Console
- Crie um arquivo de texto com o nome
random.txt
e o texto "Hello World". - Acesse o Cloud Storage no console.
- Selecione o bucket de armazenamento que você criou.
- Na guia Objetos, clique em Fazer upload de arquivos e faça o upload do arquivo
random.txt
.
gcloud
Faça upload de um arquivo de texto para o Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://events-tutorial-PROJECT_ID/random.txt
- Crie um arquivo de texto com o nome
- Para visualizar a entrada de registro:
- Acesse o Cloud Run no console.
- Na lista de serviços, clique no nome do serviço que você criou para acessar a página Detalhes do serviço.
- Clique na guia Registros para receber os registros de solicitação e contêiner para todas as revisões desse serviço. É possível filtrar por nível de gravidade de registro.
- Procure uma entrada de registro semelhante a esta:
-
gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
- Procure uma entrada de registro semelhante a esta:
Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
Em queBUCKET_NAME
é o nome do bucket do Cloud Storage.
Console
gcloud
Parabéns! Você implantou com sucesso um serviço de receptor de eventos no Cloud Run, criou um gatilho do Eventarc, gerou um evento a partir do Cloud Storage e o visualizou nos registros do Cloud Run.
Limpar
O Cloud Run não gera custos quando o serviço não está em uso, mas ainda é possível receber cobranças por armazenamento da imagem de contêiner no Container Registry, recursos do Eventarc e armazenamento de arquivos no bucket do Cloud Storage.
É possível excluir a imagem e excluir o bucket de armazenamento. Para excluir o gatilho do Eventarc:
gcloud eventarc triggers delete events-tutorial-trigger
Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Cloud interrompe o faturamento de todos os recursos usados nele.
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.