Acionadores originais com o Cloud Logging
Muitos Google Cloud eventos são registados nos registos de auditoria do Cloud. Pode filtrar estes registos e encaminhá-los para tópicos do Pub/Sub através de destinos. Estes tópicos do Pub/Sub podem, em seguida, enviar notificações que acionam funções do Cloud Run. Isto permite-lhe criar eventos personalizados a partir de qualquer serviço que produza registos de auditoria. Google Cloud
Configuração
Para executar o exemplo neste documento, precisa de um tópico do Pub/Sub e de um destinatário do Cloud Logging. O exemplo usa-as para encaminhar os registos de auditoria do Cloud para uma função do Cloud Run.
Estrutura de eventos
Tal como todas as funções acionadas pelo Pub/Sub, as funções acionadas por entradas do registo do Cloud recebem um objeto PubsubMessage
cujo parâmetro data
é uma string codificada em base64
. Para eventos de registo do Cloud, a descodificação deste valor devolve a entrada de registo relevante como uma string JSON.
Exemplo de código
Pode usar uma função acionada pelo Pub/Sub para detetar e responder a registos do Google Cloud exportados:
Node.js
Python
Go
Java
Implementar uma função
Use o seguinte comando para implementar 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 de tempo de execução de uma
versão suportada do Node.js para executar
a sua 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 de tempo de execução de uma
versão do Python suportada para executar
a sua função.
Go
gcloud functions deploy ProcessLogEntry \ --runtime go121 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão do Go suportada para executar
a sua 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 de tempo de execução de uma
versão Java suportada para executar
a sua função.
Acionar uma função
Quando é criada uma entrada do registo do Cloud que corresponde a um dos seus filtros, deve ver as entradas do registo correspondentes para a sua função:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS