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. Pode criar eventos personalizados a partir de qualquer serviço que produza registos de auditoria. Google Cloud
Esta página mostra um exemplo de como acionar funções a partir de entradas de registo encaminhadas para um tópico Pub/Sub.
Estrutura de eventos de funções acionadas pelo Pub/Sub
Tal como todas as funções acionadas pelo Pub/Sub, as funções acionadas por entradas de registo do Cloud Logging recebem um objeto PubsubMessage
cujo parâmetro data
é uma string codificada em base64
. Para eventos de registo do Cloud Logging, a descodificação deste valor devolve a entrada de registo relevante como uma string JSON.
Antes de começar
O código de exemplo encaminha os registos de auditoria do Cloud para uma função do Cloud Run. Antes de executar o código de exemplo, precisa do seguinte:
Consulte o guia de acionadores do Pub/Sub para ver as APIs a ativar e as funções necessárias para implementar funções acionadas pelo Pub/Sub.
Exemplo de código
Pode usar uma função acionada pelo Pub/Sub para detetar e responder a registos do Cloud Logging exportados:
Node.js
Python
Ir
Java
Implemente e acione uma função
Para configurar um acionador durante a implementação da função:
Execute o seguinte comando no diretório que contém o código de exemplo para implementar a sua função:
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGION
Python
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Ir
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGION
Java
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGION
Substituir:
REGION com a Google Cloud região onde quer implementar a sua função. Por exemplo,
europe-west1
.A flag
--function
especifica o ponto de entrada para a função no código fonte de exemplo. Este é o código que o Cloud Run executa quando a sua função é executada. O valor desta flag tem de ser um nome de função ou um nome de classe totalmente qualificado que exista no seu código-fonte.A flag
--base-image
especifica o ambiente de imagem base para a sua função. Para mais detalhes sobre as imagens base e os pacotes incluídos em cada imagem, consulte o artigo Imagens base de tempos de execução.
Execute o seguinte comando para criar um acionador que filtra 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" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Substituir:
TRIGGER_NAME com o nome do acionador.
EVENTARC_TRIGGER_LOCATION com a localização do acionador do Eventarc. Em geral, a localização de um acionador do Eventarc deve corresponder à localização do Google Cloud recurso que quer monitorizar para eventos. Na maioria dos cenários, também deve implementar a função na mesma região. Consulte o artigo Compreender as localizações do Eventarc para ver mais detalhes sobre as localizações dos acionadores do Eventarc.
SERVICE com o nome da função que está a implementar.
REGION com a região do Cloud Run da função.
PROJECT_NUMBER com o seu Google Cloud número do projeto. Os acionadores do Eventarc estão associados a contas de serviço para serem usados como uma identidade quando invocam a sua função. A conta de serviço do seu acionador do Eventarc tem de ter autorização para invocar a sua função. Por predefinição, o Cloud Run usa a conta de serviço de computação predefinida.
A flag
--event-filters
especifica os filtros de eventos que o acionador monitoriza. Um evento que corresponde a todos osevent-filters
, filtros aciona chamadas para a sua função. Cada acionador tem de ter um tipo de evento suportado. Não pode alterar o tipo de filtro de eventos após a criação. Para alterar o tipo de filtro de eventos, tem de criar um novo acionador e eliminar o antigo. Opcionalmente, pode repetir a flag--event-filters
com um filtro suportado no formulárioATTRIBUTE=VALUE
para adicionar mais filtros.
Entrada do registo na nuvem
Quando é criada uma entrada de registo da nuvem que corresponde a um dos seus filtros, as entradas de registo correspondentes para a sua função na Google Cloud consola devem ter o seguinte aspeto:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS