De nombreux Google Cloud événements sont consignés dans Cloud Audit Logs. Vous pouvez filtrer ces journaux et les transférer vers des sujets Pub/Sub à l'aide de récepteurs. Ces sujets Pub/Sub peuvent ensuite envoyer des notifications qui déclenchent Cloud Run Functions. Vous pouvez créer des événements personnalisés à partir de n'importe quel service Google Cloud qui génère des journaux d'audit.
Cette page montre comment déclencher des fonctions à partir d'entrées de journaux routées vers un sujet Pub/Sub.
Structure des événements des fonctions déclenchées par Pub/Sub
Comme toutes les fonctions déclenchées par Pub/Sub, les fonctions déclenchées par les entrées de journal Cloud Logging reçoivent un objet PubsubMessage
dont le paramètre data
est une chaîne encodée en base64
. Pour les événements de journaux Cloud Logging, le décodage de cette valeur renvoie l'entrée de journal correspondante sous forme de chaîne JSON.
Avant de commencer
L'exemple de code transfère Cloud Audit Logs vers une fonction Cloud Run. Avant d'exécuter l'exemple de code, vous aurez besoin des éléments suivants :
Consultez le guide sur les déclencheurs Pub/Sub pour connaître les API à activer et les rôles requis pour déployer des fonctions déclenchées par Pub/Sub.
Exemple de code
Vous pouvez utiliser une fonction déclenchée par Pub/Sub pour détecter les journaux Cloud Logging exportés et y répondre :
Node.js
Python
Go
Java
Déployer et déclencher une fonction
Pour configurer un déclencheur lors du déploiement d'une fonction :
Exécutez la commande suivante dans le répertoire contenant l'exemple de code pour déployer votre fonction :
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
Go
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
Remplacez :
REGION par la région dans laquelle vous souhaitez déployer votre fonction. Google CloudPar exemple,
europe-west1
.L'option
--function
spécifie le point d'entrée de la fonction dans l'exemple de code source. Il s'agit du code que Cloud Run exécute lorsque votre fonction s'exécute. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source.L'option
--base-image
spécifie l'environnement d'image de base de votre fonction. Pour en savoir plus sur les images de base et les packages inclus dans chaque image, consultez Images de base de l'environnement d'exécution.
Exécutez la commande suivante pour créer un déclencheur qui filtre les événements :
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
Remplacez :
TRIGGER_NAME par le nom de votre déclencheur.
EVENTARC_TRIGGER_LOCATION avec l'emplacement du déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressource Google Cloud dont vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre fonction dans la même région. Consultez Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.
SERVICE par le nom de la fonction que vous déployez.
REGION par la région Cloud Run de la fonction.
PROJECT_NUMBER par le numéro de votre Google Cloud projet. Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute par défaut.
L'option
--event-filters
spécifie les filtres d'événements que le déclencheur surveille. Les événements correspondant à tous les filtresevent-filters
déclenchent des appels vers votre fonction. Chaque déclencheur doit avoir un type d'événement compatible. Vous ne pouvez pas modifier le type de filtre d'événements après la création. Pour modifier le type de filtre d'événement, vous devez créer un nouveau déclencheur et supprimer l'ancien. Facultatif : vous pouvez répéter l'option--event-filters
avec un filtre compatible au formatATTRIBUTE=VALUE
pour ajouter d'autres filtres.
Entrée de journal Cloud
Lorsqu'une entrée de journal Cloud qui correspond à l'un de vos filtres est créée, les entrées de journal correspondantes pour votre fonction dans la consoleGoogle Cloud devraient se présenter comme suit :
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS