Cloud Functions peut répondre à des notifications de modification provenant de Google Cloud Storage. Ces notifications peuvent être configurées de manière à se déclencher en réponse à divers événements à l’intérieur d’un bucket : création, suppression et archivage d'objets, ainsi que mises à jour de métadonnées.
Types d'événement
Les événements Cloud Storage utilisés par Cloud Functions sont basés sur les notifications Cloud Pub/Sub pour Google Cloud Storage, et sont fournis au format API JSON Cloud Storage.
Les types de déclencheurs disponibles sont les suivants :
google.storage.object.finalize
(par défaut)google.storage.object.delete
google.storage.object.archive
google.storage.object.metadataUpdate
Finalisation de l'objet
Valeur du type de déclencheur : google.storage.object.finalize
Cet événement est envoyé lorsqu'un nouvel objet est créé dans le bucket (ou qu'un objet existant est remplacé et qu'une nouvelle génération de cet objet est créée).
Par exemple, la fonction suivante enregistre les données pertinentes lorsqu'un événement se produit :
Node.js
Python
Go
Java
C#
Pour déployer la fonction avec un déclencheur "finalisation de l'objet", exécutez la commande suivante dans le répertoire contenant le code de la fonction :
Node.js
gcloud functions deploy helloGCS \ --runtime nodejs10 \Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize
--runtime
, afin de spécifier votre version préférée de Node.js : nodejs10
nodejs12
Python
gcloud functions deploy hello_gcs \ --runtime python37 \Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize
--runtime
, afin de spécifier votre version préférée de Python :python37
python38
Go
gcloud functions deploy HelloGCS \ --runtime go111 \Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize
--runtime
, afin de spécifier votre version préférée de Go : go111
go113
Java
gcloud functions deploy java-gcs-function \ --entry-point HelloGcs \ --runtime java11 \ --memory 512MB \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize
C#
gcloud functions deploy csharp-gcs-function \ --entry-point HelloGcs.Function \ --runtime dotnet3 \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize
où YOUR_TRIGGER_BUCKET_NAME
est le nom du bucket Cloud Storage que la fonction surveillera.
Suppression de l'objet
Valeur du type de déclencheur : google.storage.object.delete
Cet événement est envoyé lorsqu'un objet est définitivement supprimé. En fonction du paramètre de gestion des versions d'objet des buckets, cela signifie :
pour les buckets avec gestion des versions, que celui-ci n'est envoyé que lorsqu'une version est définitivement supprimée (mais pas lorsqu'un objet est archivé) ;
pour les buckets sans gestion de versions, que celui-ci est envoyé lorsqu'un objet est supprimé ou écrasé.
Archivage de l'objet
Valeur du type de déclencheur : google.storage.object.archive
Cet événement est envoyé lorsqu'une version en ligne d'un objet est archivée ou supprimée.
Cet événement est uniquement envoyé pour les buckets avec gestion des versions.
Mise à jour des métadonnées de l'objet
Valeur du type de déclencheur : google.storage.object.metadataUpdate
Cet événement est envoyé lorsque les métadonnées d'un objet existant changent.
Structure de l'événement
Les données d'événements de stockage sont envoyées au format object
Cloud Storage.
Mécanisme de diffusion d'événements
Les événements sont envoyés via des notifications Pub/Sub issues de Cloud Storage.
Configurer trop de fonctions sur le même bucket peut vous rapprocher de la limite de notifications et empêcher la création d'une fonction, comme indiqué par l'erreur suivante : Cloud Storage bucket ...: Pub/Sub notification limit
reached
. Reportez-vous à la documentation sur les notifications Cloud Pub/Sub de Google Cloud Storage pour en savoir plus sur ces limites.
Anciens déclencheurs Cloud Storage
La commande gcloud
ci-dessous déploie une fonction déclenchée par la réception d'anciennes notifications de changement d'objet sur un bucket spécifique. Généralement, les notifications Cloud Pub/Sub sont plus faciles à utiliser, plus flexibles et plus puissantes que les notifications de modification d'objet. Cependant, ces anciennes notifications sont prises en charge pour les anciennes fonctions qui utilisent déjà ces événements.
gcloud functions deploy YOUR_FUNCTION_NAME \ --trigger-resource YOUR_TRIGGER_BUCKET_NAME \ --trigger-event providers/cloud.storage/eventTypes/object.change \ FLAGS...
Argument | Description |
---|---|
--trigger-resource NAME |
Nom du bucket Cloud Storage dont la fonction surveille les changements. |
--trigger-event NAME |
Nom du type d'événement que la fonction souhaite recevoir. Dans ce cas, il s'agit de l'ancien événement object.change . |
FLAGS... |
Options supplémentaires à spécifier lors du déploiement, telles que --runtime . Pour accéder aux informations complètes, consultez la documentation sur gcloud functions deploy .
|
Étapes suivantes
Reportez-vous au tutoriel Cloud Storage pour obtenir un exemple de mise en œuvre d'une fonction d'arrière-plan déclenchée par Cloud Storage.