1. Introdução

O Eventarc facilita a conexão de vários serviços (Cloud Run, Kubernetes, Workflows) com eventos de várias fontes. Ele permite criar arquiteturas orientadas a eventos em que os microsserviços são distribuídos e têm acoplamento flexível. Ele também cuida da ingestão, entrega, segurança, autorização e tratamento de erros de eventos, o que melhora a agilidade do desenvolvedor e a resiliência do aplicativo. Confira o codelab "Acionar o Cloud Run com eventos do Eventarc" para uma introdução ao Eventarc.
Neste codelab, você vai usar o Eventarc para ler eventos do Pub/Sub, do Cloud Storage e dos registros de auditoria do Cloud e transmiti-los a um serviço do Kubernetes em execução no Google Kubernetes Engine (GKE).
O que você vai aprender
- Criar um cluster do GKE.
- Crie um serviço do GKE como um coletor de eventos.
- Crie um gatilho do Pub/Sub.
- Criar um gatilho do Cloud Storage
- Crie um gatilho dos Registros de auditoria do Cloud.
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google É possível atualizar o local a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Inicie o Cloud Shell
Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
No Console do Google Cloud, clique no ícone do Cloud Shell na barra de ferramentas superior à direita:

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador. Você não precisa instalar nada.
Antes de começar
No Cloud Shell, verifique se o ID do projeto está configurado:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
3. Criar um cluster do GKE
Primeiro, ative os serviços necessários para o GKE:
gcloud services enable container.googleapis.com
Crie um cluster do GKE Autopilot:
CLUSTER_NAME=eventarc-cluster REGION=us-central1 gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Verifique se a criação do cluster foi concluída antes de passar para a próxima etapa.
4. Implantar um serviço do GKE
Antes de implantar um serviço, receba as credenciais de autenticação para interagir com o cluster usando kubectl:
gcloud container clusters get-credentials $CLUSTER_NAME \
--region $REGION
Em seguida, implante o contêiner hello do Cloud Run como uma implantação do Kubernetes no GKE. Esse serviço registra solicitações HTTP e CloudEvents recebidos:
SERVICE_NAME=hello-gke
kubectl create deployment $SERVICE_NAME \
--image=gcr.io/cloudrun/hello
Exponha a implantação como um serviço interno do Kubernetes. Isso cria um serviço com um IP estável acessível no cluster:
kubectl expose deployment $SERVICE_NAME \ --type ClusterIP --port 80 --target-port 8080
Antes de passar para a próxima etapa, verifique se o pod está em execução:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
Você também pode conferir o serviço:
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP hello-gke LoadBalancer 10.51.1.26 <none>
5. Configurar o Eventarc
Nesta etapa, você vai executar as etapas para configurar o Eventarc e inicializar os destinos do GKE do Eventarc.
Primeiro, ative os serviços necessários para o Eventarc e os destinos do GKE do Eventarc:
gcloud services enable eventarc.googleapis.com \ cloudresourcemanager.googleapis.com
Em seguida, permita que o Eventarc gerencie clusters do GKE:
gcloud eventarc gke-destinations init
O Eventarc cria um pod encaminhador de eventos separado para cada gatilho que segmenta um serviço do GKE e exige permissões explícitas para fazer mudanças no cluster. Isso é feito concedendo permissões a uma conta de serviço especial para gerenciar recursos no cluster. Isso precisa ser feito uma vez por projeto do Google Cloud.
6. Descoberta de eventos
Antes de criar acionadores, descubra quais são as origens de eventos, os tipos de eventos que elas podem emitir e como configurar acionadores para consumi-los.
Confira a página de documentação sobre eventos compatíveis com o Eventarc.Você também pode explorar os eventos usando gcloud.
Para ver a lista de diferentes tipos de eventos:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Para mais informações sobre cada tipo de evento:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Para ver a lista de serviços que emitem um determinado tipo de evento:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Para conferir a lista de nomes de métodos (subeventos) que cada serviço pode emitir:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
7. Criar um gatilho do Pub/Sub
Uma forma de receber eventos é pelo Pub/Sub. Qualquer aplicativo pode publicar mensagens no Pub/Sub, e essas mensagens podem ser entregues aos serviços via Eventarc.
Configuração
Antes de criar gatilhos, você precisa de uma conta de serviço para ser usada por eles.
Crie uma conta de serviço:
SERVICE_ACCOUNT=eventarc-gke-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
A conta de serviço precisa receber os seguintes papéis para acionadores com destinos do GKE:
roles/pubsub.subscriberroles/monitoring.metricWriterroles/eventarc.eventReceiver(somente para gatilhos AuditLog. Isso será adicionado em uma etapa posterior.
Conceda os papéis:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/pubsub.subscriber gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/monitoring.metricWriter
Criar
Crie um gatilho para rotear mensagens do Pub/Sub para seu serviço:
TRIGGER_NAME=trigger-pubsub-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Teste
Para verificar se o gatilho foi criado, liste todos os gatilhos:
gcloud eventarc triggers list
O gatilho do Pub/Sub cria um tópico do Pub/Sub nos bastidores. Vamos descobrir e atribuir a uma variável:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Use gcloud para publicar uma mensagem no tópico:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Para verificar se o evento foi recebido, primeiro encontre o nome do pod:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
e armazene em uma variável:
POD_NAME=hello-gke-df6469d4b-5vv22
Verifique os registros do pod para conferir o evento recebido:
kubectl logs $POD_NAME
{
"severity": "INFO",
"eventType": "google.cloud.pubsub.topic.v1.messagePublished",
"message": "Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World",
"event": {
"data": {
"subscription": "projects/atamel-eventarc-gke/subscriptions/eventarc-us-central1-trigger-pubsub-gke-sub-270",
"message": {
"data": "SGVsbG8gV29ybGQ=",
"messageId": "6031025573654834",
"publishTime": "2022-10-19T14:13:07.990Z"
}
},
"datacontenttype": "application/json",
"id": "6031025573654834",
"source": "//pubsub.googleapis.com/projects/atamel-eventarc-gke/topics/eventarc-us-central1-trigger-pubsub-gke-729",
"specversion": "1.0",
"time": "2022-10-19T14:13:07.99Z",
"type": "google.cloud.pubsub.topic.v1.messagePublished"
}
}
8. Criar um gatilho do Cloud Storage
Outra forma de receber eventos é pelo Cloud Storage. Por exemplo, um aplicativo pode fazer upload de um arquivo para um bucket, e esse evento pode ser entregue aos serviços pelo Eventarc.
Configuração
Antes de criar um gatilho do Cloud Storage, crie um bucket para receber eventos de:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gcloud storage buckets update gs://$BUCKET_NAME --location=$REGION
Também é necessário adicionar a função pubsub.publisher à conta de serviço do Cloud Storage para gatilhos do Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gcloud storage service-agent --project=$PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
Criar
Crie um gatilho para rotear novos eventos de criação de arquivos do bucket para seu serviço:
TRIGGER_NAME=trigger-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Teste
Para verificar se o gatilho foi criado, liste todos os gatilhos:
gcloud eventarc triggers list
Crie um arquivo e use gcloud storage para fazer upload dele no bucket:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
Verifique os registros do pod para conferir o evento recebido:
kubectl logs $POD_NAME
{
"severity": "INFO",
"eventType": "google.cloud.storage.object.v1.finalized",
"message": "Received event of type google.cloud.storage.object.v1.finalized. Event data: {\n \"kind\": \"storage#object\",\n \"id\": \"eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt\",\n \"name\": \"random.txt\",\n \"bucket\": \"eventarc-gcs-atamel-eventarc-gke\",\n \"generation\": \"1666190425669022\",\n \"metageneration\": \"1\",\n \"contentType\": \"text/plain\",\n \"timeCreated\": \"2022-10-19T14:40:25.678Z\",\n \"updated\": \"2022-10-19T14:40:25.678Z\",\n \"storageClass\": \"STANDARD\",\n \"timeStorageClassUpdated\": \"2022-10-19T14:40:25.678Z\",\n \"size\": \"12\",\n \"md5Hash\": \"5Z/5eUEET4XfUpfhwwLSYA==\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media\",\n \"contentLanguage\": \"en\",\n \"crc32c\": \"R1jUOQ==\",\n \"etag\": \"CJ77zIPD7PoCEAE=\"\n}\n",
"event": {
"bucket": "eventarc-gcs-atamel-eventarc-gke",
"data": {
"kind": "storage#object",
"id": "eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022",
"selfLink": "https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt",
"name": "random.txt",
"bucket": "eventarc-gcs-atamel-eventarc-gke",
"generation": "1666190425669022",
"metageneration": "1",
"contentType": "text/plain",
"timeCreated": "2022-10-19T14:40:25.678Z",
"updated": "2022-10-19T14:40:25.678Z",
"storageClass": "STANDARD",
"timeStorageClassUpdated": "2022-10-19T14:40:25.678Z",
"size": "12",
"md5Hash": "5Z/5eUEET4XfUpfhwwLSYA==",
"mediaLink": "https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media",
"contentLanguage": "en",
"crc32c": "R1jUOQ==",
"etag": "CJ77zIPD7PoCEAE="
},
"datacontenttype": "application/json",
"id": "6031255652220627",
"source": "//storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke",
"specversion": "1.0",
"subject": "objects/random.txt",
"time": "2022-10-19T14:40:25.678152Z",
"type": "google.cloud.storage.object.v1.finalized"
}
}
9. Criar um gatilho dos Registros de auditoria do Cloud
Embora o gatilho do Cloud Storage seja a melhor maneira de detectar eventos do Cloud Storage, nesta etapa, você vai criar um gatilho de registro de auditoria do Cloud para fazer o mesmo.
Configuração
Para receber eventos de um serviço, é necessário ativar os registros de auditoria. No Console do Google Cloud, selecione IAM & Admin e Audit Logs no menu superior esquerdo. Na lista de serviços, marque Google Cloud Storage:

No lado direito, verifique se Admin, Read e Write estão selecionados e clique em Save:

Também é necessário adicionar o papel eventarc.eventReceiver à conta de serviço de acionamento para acionadores do Registros de auditoria do Cloud:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/eventarc.eventReceiver
Criar
Crie um gatilho para rotear novos eventos de criação de arquivos do bucket para seu serviço:
TRIGGER_NAME=trigger-auditlog-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Teste
Os gatilhos de registros de auditoria levam um pouco de tempo para serem inicializados. Para verificar se o gatilho foi criado, liste todos os gatilhos:
gcloud eventarc triggers list
Você vai ver que o campo Active é Yes:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage-gke google.cloud.audit.log.v1.written GKE: hello-gke Yes
Crie um arquivo e use gcloud storage para fazer upload dele no bucket:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
Verifique os registros do pod para conferir o evento recebido:
kubectl logs $POD_NAME
{
"severity": "INFO",
"eventType": "google.cloud.audit.log.v1.written",
"message": "Received event of type google.cloud.audit.log.v1.written. Event data: {\"protoPayload\":{\"status\":{},\"authenticationInfo\":{\"principalEmail\":\"atameldev@gmail.com\"},\"requestMetadata\":{\"callerIp\":\"149.71.143.227\",\"callerSuppliedUserAgent\":\"apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)\",\"requestAttributes\":{\"time\":\"2022-10-19T15:05:54.144615670Z\",\"auth\":{}},\"destinationAttributes\":{}},\"serviceName\":\"storage.googleapis.com\",\"methodName\":\"storage.objects.create\",\"authorizationInfo\":[{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.delete\",\"granted\":true,\"resourceAttributes\":{}},{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.create\",\"granted\":true,\"resourceAttributes\":{}}],\"resourceName\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"serviceData\":{\"@type\":\"type.googleapis.com/google.iam.v1.logging.AuditData\",\"policyDelta\":{\"bindingDeltas\":[{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectOwner:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectEditor:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"user:atameldev@gmail.com\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectReader\",\"member\":\"projectViewer:atamel-eventarc-gke\"}]}},\"resourceLocation\":{\"currentLocations\":[\"us-central1\"]}},\"insertId\":\"-8vmrbve7pol2\",\"resource\":{\"type\":\"gcs_bucket\",\"labels\":{\"project_id\":\"atamel-eventarc-gke\",\"bucket_name\":\"eventarc-gcs-atamel-eventarc-gke\",\"location\":\"us-central1\"}},\"timestamp\":\"2022-10-19T15:05:54.138732321Z\",\"severity\":\"INFO\",\"logName\":\"projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access\",\"receiveTimestamp\":\"2022-10-19T15:05:54.839604461Z\"}",
"event": {
"data": {
"protoPayload": {
"status": {
},
"authenticationInfo": {
"principalEmail": "atameldev@gmail.com"
},
"requestMetadata": {
"callerIp": "149.71.143.227",
"callerSuppliedUserAgent": "apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)",
"requestAttributes": {
"time": "2022-10-19T15:05:54.144615670Z",
"auth": {
}
},
"destinationAttributes": {
}
},
"serviceName": "storage.googleapis.com",
"methodName": "storage.objects.create",
"authorizationInfo": [
{
"resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
"permission": "storage.objects.delete",
"granted": true,
"resourceAttributes": {
}
},
{
"resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
"permission": "storage.objects.create",
"granted": true,
"resourceAttributes": {
}
}
],
"resourceName": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
"serviceData": {
"@type": "type.googleapis.com/google.iam.v1.logging.AuditData",
"policyDelta": {
"bindingDeltas": [
{
"action": "ADD",
"role": "roles/storage.legacyObjectOwner",
"member": "projectOwner:atamel-eventarc-gke"
},
{
"action": "ADD",
"role": "roles/storage.legacyObjectOwner",
"member": "projectEditor:atamel-eventarc-gke"
},
{
"action": "ADD",
"role": "roles/storage.legacyObjectOwner",
"member": "user:atameldev@gmail.com"
},
{
"action": "ADD",
"role": "roles/storage.legacyObjectReader",
"member": "projectViewer:atamel-eventarc-gke"
}
]
}
},
"resourceLocation": {
"currentLocations": [
"us-central1"
]
}
},
"insertId": "-8vmrbve7pol2",
"resource": {
"type": "gcs_bucket",
"labels": {
"project_id": "atamel-eventarc-gke",
"bucket_name": "eventarc-gcs-atamel-eventarc-gke",
"location": "us-central1"
}
},
"timestamp": "2022-10-19T15:05:54.138732321Z",
"severity": "INFO",
"logName": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access",
"receiveTimestamp": "2022-10-19T15:05:54.839604461Z"
},
"datacontenttype": "application/json; charset=utf-8",
"dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json",
"id": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access-8vmrbve7pol21666191954138732",
"methodname": "storage.objects.create",
"recordedtime": "2022-10-19T15:05:54.138732321Z",
"resourcename": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
"servicename": "storage.googleapis.com",
"source": "//cloudaudit.googleapis.com/projects/atamel-eventarc-gke/logs/data_access",
"specversion": "1.0",
"subject": "storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
"time": "2022-10-19T15:05:54.839604461Z",
"type": "google.cloud.audit.log.v1.written"
}
}
10. Parabéns!
Parabéns por concluir o codelab.
O que aprendemos
- Criar um cluster do GKE.
- Crie um serviço do GKE como um coletor de eventos.
- Crie um gatilho do Pub/Sub.
- Crie um gatilho do Cloud Storage.
- Crie um gatilho dos Registros de auditoria do Cloud.