De nombreux événements Google Cloud 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 journal acheminé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 appropriée sous la forme d'une 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 devez disposer des éléments suivants:
Consultez le guide des 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:
Pour déployer votre fonction, exécutez la commande suivante dans le répertoire contenant l'exemple de code:
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
Remplacez :
REGION par la région Google Cloud dans laquelle vous souhaitez déployer votre fonction. Par exemple,
us-central1
.L'option
--function
spécifie le point d'entrée de la fonction dans un exemple de code source. Il s'agit du code exécuté par Cloud Run 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 la section Images de base des environnements 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 par 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 la section 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 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-filters
spécifie les filtres d'événements que le déclencheur surveille. Un événement correspondant à tous les filtresevent-filters
déclenche 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 sa 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 console Google Cloud doivent se présenter comme suit:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS