Fonctions CloudEvent
Une fonction CloudEvent est un type de fonction basée sur des événements. Les fonctions CloudEvent sont appelées indirectement en réponse à des événements, tels qu'un message sur un sujet Pub/Sub, une modification dans un bucket Cloud Storage ou un événement Firebase.
Les fonctions CloudEvent sont conceptuellement similaires aux fonctions d'arrière-plan. La principale différence entre les deux est que les fonctions CloudEvent utilisent un format d'événement standard dans l'industrie appelé CloudEvents. Une autre différence est que Cloud Functions appelle des fonctions CloudEvent à l'aide de requêtes HTTP, qui peuvent être reproduites ailleurs. Ces différences permettent de déplacer facilement les fonctions CloudEvent entre les plates-formes de calcul.
Environnements d'exécution acceptés
Les environnements d'exécution suivants sont compatibles avec les fonctions CloudEvent :
Langue | Version(s) |
---|---|
PHP Beta |
All |
C# Beta |
Toutes |
Ruby Beta |
Toutes |
Paramètres de fonction
Les fonctions CloudEvent transmettent un seul argument cloudEvent
contenant les propriétés et les métadonnées associées à l'événement qui a déclenché l'exécution de la fonction. Les événements cloud entrants sont ensuite convertis dans les représentations spécifiques aux langages indiquées ci-dessous à l'aide des bibliothèques du framework des fonctions.
C#
Le paramètre cloudEvent
est transmis à votre fonction en tant qu'objet CloudEvent
qui contient les propriétés suivantes :
Valeur | Type | Description |
---|---|---|
Id |
String |
ID unique de l'événement. |
Source |
Uri |
Entité Google Cloud affectée par l'événement, au format /[SERVICE_DOMAIN_NAME]/[RESOURCE]/ .
|
Type |
String |
Type CloudEvent de l'événement reçu. |
Time |
DateTimeOffset pouvant être nul |
Horodatage du moment où l'événement s'est produit. |
SpecVersion |
CloudEventsSpecVersion |
Version de spécification CloudEvents utilisée pour créer l'événement. |
Data |
Object |
Un objet (object ) contenant des données spécifiques au type d'événements.
|
Subject
|
String pouvant être nulle |
La valeur de "subject" dépend du type d'événement déclenché.
Si l'événement sous-jacent fait référence à un objet Cloud Storage, cette propriété sera définie sur l'emplacement de l'objet, au format objects/path/to/object .
Certains événements ne définissent pas de valeur pour "subject". Dans ce cas, cette propriété sera définie sur null .
|
Ruby
Le paramètre cloudEvent
est transmis à votre fonction en tant qu'objet CloudEvents::Event::V1
qui contient les propriétés suivantes :
Valeur | Type | Description |
---|---|---|
cloudEvent.id |
String |
ID unique de l'événement. |
cloudEvent.source |
URI |
Entité Google Cloud affectée par l'événement, au format /[SERVICE_DOMAIN_NAME]/[RESOURCE]/ .
|
cloudEvent.type |
String |
Type CloudEvent de l'événement reçu. |
cloudEvent.time |
DateTime |
Horodatage du moment où l'événement s'est produit. |
cloudEvent.specversion |
String |
Version de spécification CloudEvents utilisée pour créer l'événement. |
cloudEvent.data |
Hash |
Un objet (Hash ) contenant des données spécifiques aux types d'événements.
|
cloudEvent.subject
|
String ou Nil
|
La valeur de "subject" dépend du type d'événement déclenché.
Si l'événement sous-jacent fait référence à un objet Cloud Storage, cette propriété sera définie sur l'emplacement de l'objet, au format objects/path/to/object .
Certains événements ne définissent pas de valeur pour "subject". Dans ce cas, cette propriété sera définie sur Nil .
|
PHP
Le paramètre cloudEvent
est transmis à votre fonction en tant qu'objet CloudEvent
, qui contient les éléments suivants :
Fonction | Type | Description |
---|---|---|
cloudEvent->getId() |
string |
ID unique de l'événement. |
cloudEvent->getSource() |
string |
Entité Google Cloud affectée par l'événement, au format /[SERVICE_DOMAIN_NAME]/[RESOURCE]/ .
|
cloudEvent->getType() |
string |
Type CloudEvent de l'événement reçu. |
cloudEvent->getTime() |
?string |
Horodatage du moment où l'événement s'est produit. |
cloudEvent->getSpecVersion() |
string |
Version de spécification CloudEvents utilisée pour créer l'événement. |
cloudEvent->getSubject()
|
?string
|
La valeur de "subject" dépend du type d'événement déclenché.
Si l'événement sous-jacent fait référence à un objet Cloud Storage, cette propriété sera définie sur l'emplacement de l'objet, au format objects/path/to/object .
Certains événements ne définissent pas de valeur pour "subject". Dans ce cas, cette propriété sera définie sur null .
|
cloudEvent->getData()
|
Object
|
Un objet (object ) contenant des données spécifiques au type d'événements.
|
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.
C#
Ruby
PHP
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 CloudEvent 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.
C#
Ruby
PHP
Pour en savoir plus sur le déploiement des fonctions CloudEvent déclenchées par des événements Cloud Storage, consultez les pages Déclencheurs Cloud Storage et Tutoriel sur Cloud Storage.
Pour en savoir plus sur la diffusion d'événements (également au format CloudEvents) à un service Cloud Run cible à l'aide d'Eventarc, consultez la page Créer un déclencheur pour Cloud Run.
Conseils et astuces
Journalisation des événements
Le contenu des événements n'est pas automatiquement consigné, car il peut contenir des informations confidentielles. Si vous souhaitez consigner le contenu des événements, vous devez le faire explicitement, comme décrit sur la pageÉcrire, afficher des journaux et y répondre.
Arrêter des fonctions CloudEvent
Si une fonction CloudEvent crée des tâches en arrière-plan, vous devez résoudre ces tâches avant de terminer la fonction pour éviter les erreurs et/ou un comportement indéfini.
Nouvelles tentatives automatiques
Les fonctions CloudEvent peuvent être configurées pour relancer automatiquement les appels ayant échoué. Pour en savoir plus, consultez la section Nouvelles tentatives d'exécution des fonctions déclenchées par des événements.
É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