Gatilhos secundários com o Cloud Logging
Muitos eventos do Google Cloud Platform 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 o Cloud Functions. Isso permite que você crie eventos personalizados a partir de qualquer serviço do Google Cloud Platform que produza registros de auditoria.
Configuração
Para executar a amostra abaixo, será necessário 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.
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.
Exemplo de código
É possível usar uma função acionada pelo Pub/Sub como a abaixo para detectar e responder a registros exportados do Cloud:
Node.js
Python
Go
Java
Como implantar uma função
Use o comando abaixo para implantar a função:
// LINT.IfChange(nodejs_version) // LINT.ThenChange(:nodejs_version_console_text) // LINT.IfChange(nodejs_version_console_text) // LINT.ThenChange(:nodejs_version)Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC
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
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
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
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