Os Registros de auditoria do Cloud registram eventos em vários serviços do Google Cloud . Usando coletores, é possível filtrar esses registros e encaminhá-los para tópicos do Pub/Sub que acionam funções do Cloud Run. Isso permite que você responda a eventos de qualquer serviço doGoogle Cloud que produza registros de auditoria.
Nesta página, mostramos um exemplo de como invocar funções de entradas de registro roteadas para um tópico do Pub/Sub. Este tutorial usa gatilhos do Eventarc, mas também é possível usar gatilhos diretos do Pub/Sub ao acionar a função.
Estrutura de eventos de funções acionadas pelo Pub/Sub
As funções acionadas por entradas de registro do Cloud Logging recebem um objeto PubsubMessage com o parâmetro data como uma string codificada em base64. Para eventos de registro do Cloud Logging, a decodificação desse valor
retorna a entrada de registro relevante como uma string JSON.
Antes de começar
O exemplo de código encaminha os Registros de Auditoria do Cloud para uma função do Cloud Run. Antes de executar o exemplo de código, você vai precisar do seguinte:
Consulte o guia de gatilhos do Pub/Sub para saber quais APIs ativar e os papéis necessários para implantar funções acionadas pelo Pub/Sub.
Exemplo de código
É possível usar uma função acionada pelo Pub/Sub para detectar e responder a registros exportados do Cloud Logging:
Node.js
Python
Go
Java
Implantar e acionar uma função
Para configurar um gatilho durante a implantação da função:
Execute o seguinte comando no diretório que contém o exemplo de código para implantar a função:
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGIONPython
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGIONGo
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGIONJava
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGIONSubstitua:
- REGION: a Google Cloud região em que você quer implantar a função. Por exemplo,
europe-west1. - A flag
--functionespecifica o ponto de entrada para a função no exemplo de código-fonte. Esse é o código que o Cloud Run executa quando é executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte. - A flag
--base-imageespecifica o ambiente de imagem base da sua função. Para mais detalhes sobre as imagens de base e os pacotes incluídos em cada imagem, consulte Imagens de base dos ambientes de execução.
- REGION: a Google Cloud região em que você quer implantar a função. Por exemplo,
Execute o comando a seguir para criar um gatilho que filtre eventos:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=PROJECT_NUMBER-compute@Substitua:
- TRIGGER_NAME: o nome do gatilho.
- EVENTARC_TRIGGER_LOCATION: o local do gatilho do Eventarc. Em geral, o local de um gatilho do Eventarc precisa corresponder ao local do recurso doGoogle Cloud que você quer monitorar para eventos. Na maioria dos cenários, você também precisa implantar a função na mesma região. Consulte Noções básicas sobre locais do Eventarc para mais detalhes sobre locais de acionador do Eventarc.
- SERVICE: o nome da função que você está implantando.
- REGION: a região do Cloud Run em que você implantou a função.
- PROJECT_NUMBER: o número do projeto do Google Cloud . Os gatilhos do Eventarc são vinculados a contas de serviço para usar como uma identidade ao invocar a função. A conta de serviço do acionador do Eventarc precisa ter permissão para invocar a função. Por padrão, o Cloud Run usa a conta de serviço padrão do Compute.
- A flag
--event-filtersespecifica os filtros de evento que o gatilho monitora. Quando um evento corresponde a todos os filtros de evento, ele aciona uma chamada para sua função. Cada gatilho precisa ter um tipo de evento compatível. Não é possível mudar o tipo de filtro de evento após a criação. Para mudar o tipo de filtro de evento, é necessário criar um novo gatilho e excluir o antigo. Opcional: é possível repetir a flag--event-filterscom um filtro compatível no formatoATTRIBUTE=VALUEpara adicionar mais filtros. - TOPIC_NAME: o nome do tópico do Pub/Sub que recebe os eventos de entrada de registro.
- A flag
--transport-topicespecifica o tópico do Pub/Sub que o Eventarc usa para transportar eventos para sua função. Essa flag não é obrigatória se você não tiver criado um tópico do Pub/Sub.
Entrada de registro do Cloud
Quando uma entrada de registro do Cloud que corresponde a um dos seus filtros é criada, as entradas de registro correspondentes da sua função no console doGoogle Cloud devem ser assim:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS