Gatilhos secundários com o Cloud Logging
Muitos eventos do Google Cloud são registrados nos Registros de auditoria do Cloud. É possível filtrar esses registros e encaminhá-los para tópicos do Pub/Sub usando coletores. Esses tópicos do Pub/Sub podem acabar enviando notificações que acionam as funções do Cloud Run. Isso permite que você crie eventos personalizados de qualquer serviço do Google Cloud que produza registros de auditoria.
Configuração
Para executar o exemplo neste documento, você precisará de um Tópico do Pub/Sub e um coletor do Cloud Logging. A amostra usa-os para encaminhar registros de auditoria do Cloud para uma função do Cloud Run.
Estrutura do evento
Como todas as funções acionadas pelo Pub/Sub, as funções acionadas pelas entradas de registro do Cloud recebem um objeto PubsubMessage
que tem como parâmetro data
uma string com codificação base64
. Para eventos de registro do Cloud, a decodificação desse valor retorna a entrada de registro relevante como uma string JSON.
Código de amostra
É possível usar uma função acionada pelo Pub/Sub para detectar e responder a registros exportados do Cloud:
Node.js
Python
Go
Java
Como implantar uma função
Use o seguinte comando para implantar a função:
Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão do Node.js compatível a fim de executar a função.
Python
gcloud functions deploy process_log_entry \ --runtime python312 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão compatível do Python a fim de executar a função.
Go
gcloud functions deploy ProcessLogEntry \ --runtime go121 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão do Go compatível a fim de executar a função.
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Use a flag --runtime
para especificar o ID do ambiente de execução de uma versão compatível do Java a fim de executar a função.
Como acionar uma função
Quando uma entrada de registro do Cloud que corresponde a um dos seus filtros é criada, você precisa ver entradas de registro correspondentes à sua função:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS