Cloud Audit Logs enregistre les événements de nombreux services Google Cloud . À l'aide de récepteurs, vous pouvez filtrer ces journaux et les transférer vers des sujets Pub/Sub qui déclenchent des fonctions Cloud Run. Cela vous permet de répondre aux événements de n'importe quel serviceGoogle Cloud qui génère des journaux d'audit.
Cette page montre un exemple d'appel de fonctions à partir d'entrées de journal acheminées vers un sujet Pub/Sub. Ce tutoriel utilise des déclencheurs Eventarc, mais vous pouvez également utiliser des déclencheurs Pub/Sub directs pour déclencher votre fonction.
Structure d'événement des 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 journal 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 les journaux 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 de la 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 REGIONPython
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGIONGo
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGIONJava
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGIONRemplacez les éléments suivants :
- REGION : région Google Cloud dans laquelle vous souhaitez déployer votre fonction. Par exemple,
europe-west1. - L'option
--functionspé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 lors de l'exécution de votre fonction. 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-imagespé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 des environnements d'exécution.
- REGION : région Google Cloud dans laquelle vous souhaitez déployer votre fonction. Par exemple,
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" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=PROJECT_NUMBER-compute@Remplacez les éléments suivants :
- TRIGGER_NAME : nom de votre déclencheur.
- EVENTARC_TRIGGER_LOCATION : l'emplacement du déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressourceGoogle 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 la section Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.
- SERVICE : nom de la fonction que vous déployez.
- REGION : région Cloud Run dans laquelle vous avez déployé votre fonction.
- PROJECT_NUMBER : numéro de votre projet Google Cloud . 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-filtersspécifie les filtres d'événements que le déclencheur surveille. Lorsqu'un événement correspond à tous les filtres d'événement, il déclenche un appel 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énement après sa création. Pour modifier le type de filtre d'événement, vous devez créer un déclencheur et supprimer l'ancien. Facultatif : vous pouvez répéter l'option--event-filtersavec un filtre compatible au formatATTRIBUTE=VALUEpour ajouter d'autres filtres. - TOPIC_NAME : nom du sujet Pub/Sub qui reçoit les événements d'entrée de journal.
- L'option
--transport-topicspécifie le sujet Pub/Sub qu'Eventarc utilise pour transporter les événements vers votre fonction. Notez que cette option n'est pas obligatoire si vous n'avez pas créé de sujet Pub/Sub auparavant.
Entrée de journal cloud
Lorsqu'une entrée de journal Cloud correspondant à l'un de vos filtres est créée, les entrées de journal correspondantes pour votre fonction dans la consoleGoogle Cloud doivent se présenter comme suit :
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS