Muchos eventos de Google Cloud se encuentran en los registros de auditoría de Cloud. Puedes filtrar estos registros y reenviarlos a los temas de Pub/Sub mediante receptores. Luego, estos temas de Pub/Sub pueden enviar notificaciones que activan funciones de Cloud Run Functions. Puedes crear eventos personalizados desde cualquier servicio de Google Cloud que produzca registros de auditoría.
En esta página, se muestra un ejemplo de cómo activar funciones desde entradas de registro enrutadas a un tema de Pub/Sub.
Estructura de eventos de las funciones activadas por Pub/Sub
Como ocurre con todas las funciones activadas por Pub/Sub, las que se activan mediante entradas de registro de Cloud Logging reciben un objeto PubsubMessage
cuyo parámetro data
es una cadena codificada en base64
. En el caso de los eventos de registro de Cloud Logging, la decodificación de este valor muestra la entrada de registro relevante como una cadena JSON.
Antes de comenzar
El código de muestra reenvía los Registros de auditoría de Cloud a una función de Cloud Run. Antes de ejecutar el código de muestra, necesitarás lo siguiente:
Consulta la Guía de activadores de Pub/Sub para conocer las APIs que se deben habilitar y los roles necesarios para implementar funciones que activa Pub/Sub.
Código de muestra
Puedes usar una función activada por Pub/Sub para detectar registros de Cloud Logging exportados y responder a ellos:
Node.js
Python
Go
Java
Implementa y activa una función
Para configurar un activador durante la implementación de la función, sigue estos pasos:
Ejecuta el siguiente comando en el directorio que contiene el código de muestra para implementar la función:
Node.js
gcloud beta run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGION
Python
gcloud beta run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Go
gcloud beta run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGION
Java
gcloud beta run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGION
Reemplaza lo siguiente:
REGION por la región de Google Cloud en la que deseas implementar tu función. Por ejemplo,
us-central1
.La marca
--function
especifica el punto de entrada a la función en el código fuente de ejemplo. Este es el código que ejecuta Cloud Run cuando se ejecuta tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completamente calificado que exista en tu código fuente.La marca
--base-image
especifica el entorno de la imagen base para tu función. Para obtener más detalles sobre las imágenes base y los paquetes incluidos en cada imagen, consulta Imágenes base de los entornos de ejecución.
Ejecuta el siguiente comando para crear un activador 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" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Reemplaza lo siguiente:
TRIGGER_NAME por el nombre de tu activador.
EVENTARC_TRIGGER_LOCATION con la ubicación del activador de Eventarc. En general, la ubicación de un activador de Eventarc debe coincidir con la ubicación del recurso de Google Cloud que deseas supervisar para detectar eventos. En la mayoría de los casos, también debes implementar tu función en la misma región. Consulta Información sobre las ubicaciones de Eventarc para obtener más detalles sobre las ubicaciones de activadores de Eventarc.
Reemplaza SERVICE por el nombre de la función que implementas.
REGION por la región de Cloud Run de la función.
PROJECT_NUMBER por tu número de proyecto de Google Cloud Los activadores de Eventarc están vinculados a cuentas de servicio para usarlos como identidad cuando se invoca la función. La cuenta de servicio del activador de Eventarc debe tener permiso para invocar tu función. De forma predeterminada, Cloud Run usa la cuenta de servicio de procesamiento predeterminada.
La marca
--event-filters
especifica los filtros de eventos que supervisa el activador. Un evento que coincida con todos los filtrosevent-filters
activa llamadas a tu función. Cada activador debe tener un tipo de evento compatible. No puedes cambiar el tipo de filtro de eventos después de crearlo. Para cambiar el tipo de filtro de eventos, debes crear un activador nuevo y borrar el anterior. De forma opcional, puedes repetir la marca--event-filters
con un filtro compatible en el formatoATTRIBUTE=VALUE
para agregar más filtros.
Entrada de registro de Cloud
Cuando se crea una entrada de registro de Cloud que coincide con uno de tus filtros, las entradas de registro correspondientes para tu función en la consola de Google Cloud deberían verse de la siguiente manera:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS