Les fonctions d'arrière-plan vous permettent d'appeler indirectement une fonction Cloud en réponse à un événement, tel qu'un message sur un sujet Pub/Sub, une modification dans un bucket Cloud Storage ou un événement Firebase.
Pour en savoir plus sur le traitement des nouvelles tentatives de fonction d'arrière-plan, consultez la section Répétition des tentatives des fonctions d'arrière-plan.
Environnements d'exécution acceptés
Les environnements d'exécution suivants sont compatibles avec les fonctions d'arrière-plan :
Langue | Versions |
---|---|
Node.js | All |
Python | All |
Go | All |
Java | All |
Exemple d'utilisation
Les exemples ci-dessous montrent comment traiter les événements provenant de Pub/Sub et de Cloud Storage. Pour en savoir plus sur la gestion des événements provenant de différentes sources, consultez la page Appeler les fonctions Cloud.
Exemple Pub/Sub
Cet exemple montre une fonction cloud déclenchée par des événements Pub/Sub. Chaque fois qu'un message est publié dans un sujet Pub/Sub, la fonction est appelée et un message d'accueil contenant les données issues du message est écrit dans le journal.
Node.js
Python
Go
Java
C#
Ruby
Pour plus d'informations sur le déploiement de fonctions Cloud déclenchées par des événements Pub/Sub, consultez les pages Déclencheurs Pub/Sub et Tutoriel sur Pub/Sub.
Exemple Cloud Storage
Cet exemple décrit une fonction cloud déclenchée par des événements Cloud Storage. Chaque fois qu'un objet est créé dans un bucket Cloud Storage, la fonction est appelée et un message concernant la modification est écrit dans le journal.
Node.js
Python
Go
Java
C#
Ruby
Pour en savoir plus sur le déploiement des fonctions Cloud déclenchées par des événements Cloud Storage, consultez les pages Déclencheurs Cloud Storage et Tutoriel sur Cloud Storage.
Paramètres de fonction
Les fonctions d'arrière-plan consistent à transmettre des arguments contenant les données associées à l'événement qui a déclenché l'exécution de la fonction. Les paramètres des fonctions d'arrière-plan sont décrits ci-dessous :
Node.js
Dans les environnements d'exécution Node.js, votre fonction reçoit les arguments (data, context, callback)
:
Propriété | Description | Type |
---|---|---|
data |
L'objet de données pour l'événement. Son type dépend de l'événement. | Objet |
context |
L'objet de contexte pour l'événement. | Objet |
context.eventId |
Un ID unique pour l'événement. Exemple : "70172329041928" . |
Chaîne |
context.timestamp |
La date/heure de création de cet événement. Par exemple, "2018-04-09T07:56:12.975Z" .
|
Chaîne (ISO 8601) |
context.eventType |
Le type d'événement. Par exemple, "google.pubsub.topic.publish" .
|
Chaîne |
context.resource |
La ressource qui a émis l'événement. | Objet |
callback |
Un rappel pour signaler l'achèvement de l'exécution de la fonction, suivi de la convention "errback", qui interprète le premier argument comme une erreur : callback(); // Success callback(null, 'Success!'); // Success callback(1); // Error callback(new Error('Failed')); // Error |
Fonction |
Python
Dans l'environnement d'exécution Python, votre fonction reçoit les arguments (data, context)
:
Propriété | Description | Type |
---|---|---|
data |
Un dictionnaire contenant les données de l'événement. Son format dépend de l'événement. | Objet Cloud Storage ou PubsubMessage |
context |
L'objet de contexte pour l'événement. | Contexte |
context.event_id |
Un ID unique pour l'événement. Exemple : "70172329041928" . |
Chaîne |
context.timestamp |
La date/heure de création de cet événement. Par exemple, "2018-04-09T07:56:12.975Z" .
|
Chaîne (ISO 8601) |
context.event_type |
Le type d'événement. Par exemple, "google.pubsub.topic.publish" .
|
Chaîne |
context.resource |
La ressource qui a émis l'événement. | Chaîne |
Go
Dans l'environnement d'exécution Go, votre fonction reçoit les arguments (ctx, Event)
:
Propriété | Description | Type |
---|---|---|
ctx |
Une valeur context.Context contenant des métadonnées associées à l'événement. Vous pouvez récupérer les métadonnées à l'aide du package cloud.google.com/go/functions/metadata .
|
context.Context
|
Event |
Une valeur
La définition de
Notez que votre |
Valeur struct personnalisée |
Java
Dans l'environnement d'exécution Java, votre fonction reçoit les paramètres (event, context)
. Il existe deux types de fonctions d'arrière-plan, BackgroundFunction<T>
et RawBackgroundFunction
:
Propriété | Description | Type |
---|---|---|
event |
Charge utile de l'événement. Le contenu de la charge utile dépend du déclencheur pour lequel la fonction a été enregistrée.
Pour BackgroundFunction<T> , ce paramètre est de type T , une classe définie par l'utilisateur. La charge utile JSON de l'événement est désérialisée dans une instance de cette classe à l'aide de la méthode Gson.fromJson .
Pour RawBackgroundFunction , ce paramètre est de type String et contient la charge utile JSON de l'événement.
|
Défini par l'utilisateur, ou String |
context |
Un objet Context en lecture seule contenant des métadonnées associées à l'événement. |
Context
|
C#
Dans l'environnement d'exécution .NET Core 3.1, il existe deux types de fonctions CloudEvent : ICloudEvent<T>
et ICloudEvent
(également appelée fonction CloudEvent non typée).
Si vous mettez en œuvre ICloudEvent<T>
, votre fonction reçoit les paramètres (cloudEvent, data, cancellationToken)
. Si vous mettez en œuvre ICloudEvent
, votre fonction reçoit les paramètres (cloudEvent, cancellationToken)
.
Propriété | Description |
---|---|
cloudEvent |
Événement CloudEvent qui a déclenché la fonction, contenant des métadonnées sur l'événement ainsi que les données brutes. |
data |
Données extraites de l'événement, de type T , où T est l'argument de type de votre fonction. Ce paramètre n'est pas intégré pour les fonctions CloudEvent non typées.
|
cancellationToken |
Jeton d'annulation à surveiller pour la requête en cours d'annulation. |
Ruby
Dans l'environnement d'exécution Ruby, les fonctions CloudEvent transmettent un seul paramètre, un objet CloudEvent de type CloudEvents::Event::V1
. Les propriétés de cet objet incluent:
Valeur | Description | Type |
---|---|---|
id |
Un ID unique pour l'événement. Exemple : 70172329041928 .
|
String
|
time |
La date/heure de création de cet événement. | DateTime |
type |
Le type d'événement. Exemple : google.cloud.pubsub.topic.v1.messagePublished . |
String |
source |
La ressource qui a émis l'événement. Exemple : //pubsub.googleapis.com/projects/sample-project/topics/gcf-test .
|
URI
|
data |
L'objet de données pour l'événement. Il s'agit d'un hachage dont les clés dépendent de l'événement. | Hash |
Les données d'événement dépendent du déclencheur pour lequel la fonction a été enregistrée, par exemple, Pub/Sub ou Cloud Storage. Dans le cas de fonctions à déclenchement direct (par la commande gcloud functions call
), les données d'événement contiennent le message que vous avez envoyé directement.
Arrêter les fonctions d'arrière-plan
Si une fonction crée des tâches en arrière-plan (telles que des threads, des futurs, des promesses, des rappels ou des processus système), vous devez arrêter ou résoudre ces tâches avant d'en finir avec la fonction. Les tâches qui ne sont pas arrêtées avant la fin d'une exécution particulière peuvent ne pas se terminer et peuvent également entraîner un comportement non défini.
Les environnements d'exécution Node.js permettent aux fonctions de fournir des références aux tâches en cours et de demander à Cloud Functions de les attendre. Pour ce faire, Cloud Functions peut procéder de l'une des deux manières suivantes :
- Il peut renvoyer une promesse (
Promise
) qui est résolue une fois la fonction terminée. - Il peut appeler l'argument
callback
dans une fonction de rappel une fois l'opération terminée.
Étapes suivantes
- Déployer des fonctions Cloud Functions
- Appeler des fonctions du déclencheur Pub/Sub
- Appeler des fonctions du déclencheur Cloud Storage
- Tutoriel Cloud Functions avec Pub/Sub
- Tutoriel Cloud Functions avec Cloud Storage