Utilisation du producteur d'événement de temporisateur périodique (cron)
Le producteur d'événement de temporisateur périodique (cron) génère un événement à intervalles réguliers. L'intervalle peut être exprimé en minutes, heures, jours ou mois ou correspondre à une combinaison de plusieurs intervalles différents. Vous pouvez souscrire à Code Engine apps, fonctions et jobs pour recevoir des événements cron.
L'abonnement à l'événement Periodic timer utilise la syntaxe crontab standard pour spécifier les détails de l'intervalle, au format * * * * *, où les champs sont les minutes, les heures, le jour du mois, le mois de l'année et le jour
de la semaine. Par exemple, pour planifier l'exécution d'un événement à minuit, spécifiez 0 0 * * *. Pour planifier l'exécution d'un événement tous les vendredis à minuit, spécifiez 0 0 * * 5. Pour plus d'informations
sur la crontab, voir CRONTAB.
Lorsque vous vous abonnez à un producteur d'événements périodiques, vous devez fournir une destination (application, fonction ou travail) et un type de destination pour l'abonnement. Si vous n'indiquez pas de planning, la valeur par défaut * * * * * (toutes les minutes) est utilisée.
Code Engine dispose de quotas pour les abonnements au compteur périodique au sein d'un projet et de limites d'abonnement. Pour plus d'informations sur les limites dans Code Engine, voir Limites et quotas pour Code Engine.
Abonnement à des événements de temporisateur périodique (cron) pour une application
Vous pouvez utiliser les abonnements périodiques à partir de la console ou de l'interface de programmation.
Les événements sont envoyés aux applications en tant que demandes HTTP POST. Pour plus de détails sur les informations incluses dans un événement, voir Informations relatives aux en-têtes et au corps HTTP pour les événements.
Abonnement à des événements de temporisateur périodique (cron) pour une application depuis la console
Vous pouvez créer et mettre à jour des abonnements à des événements périodiques pour une application à partir de la console.
Avant de commencer
- Créez un projet.
- Créez une application. Par exemple, créez une application appelée
myappqui utilise l'imageicr.io/codeengine/cron. Cette image est construite à partir decron.go, disponible dans le répertoire Samples for IBM Cloud Code Engine GitHub.
Effectuez les étapes suivantes pour créer et mettre à jour un abonnement à un événement périodique pour une application à partir de la console.
-
Sur la page Code Engine Projects, accédez à votre projet.
-
Sur la page Présentation, cliquez sur Abonnements à des événements.
-
Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
-
Sur la page Créer un abonnement à un événement, effectuez les étapes suivantes :
- Pour leType d’évènement, sélectionnez la mosaïque de temporisateur périodique. Cliquez sur Suivant.
- Pour Général, indiquez le nom de l'abonnement au temporisateur périodique,
myptimerpar exemple. Vous pouvez le cas échéant fournir des attributs d'événement. Sachez que si le consommateur d'événement de temporisateur périodique est une application, les attributs de l'événement sont disponibles sous forme d'en-têtes HTTP. Si le consommateur d'événement est un travail, les attributs de l'événement sont disponibles sous forme de variables d'environnement. Cliquez sur Suivant pour continuer. - Pour le paramètre de planification Schedule, fournissez des informations sur l'échelonnement des événements. Le producteur d'événements périodiques utilise la syntaxe crontab standard pour spécifier les détails de l'intervalle.
Choisissez votre intervalle parmi les modèles fournis ou fournissez votre propre expression cron personnalisée, telle que
0 0 * * *indiquant que l'événement doit se produire tous les jours à minuit. Dans le cas présent, sélectionnez le modèle de planification pour chaque jour, chaque heure, chaque minute. Notez que l'expression cron est générée automatiquement. Les modèles de jour, d'heure et de minute et l'expression Cron sont en temps universel coordonné (UTC). Si vous ne définissez pas la planification, cet abonnement envoie un événement toutes les minutes. Une liste des événements planifiés à venir s'affiche. Notez que ces événements sont affichés dans votre fuseau horaire. Cliquez sur Suivant pour continuer. - Pour Données d'événements personnalisées, fournissez les données à inclure dans le corps de votre message d'événement. Vous pouvez spécifier le message en texte brut ou au format base64. Dans le cas présent, spécifiez
le texte
hello strangeren tant que corps du message d'événement. Si le message est au format base64, vous pouvez faire en sorte qu'il soit décodé lors de l'envoi de l'événement. Vous pouvez également spécifier le type de contenu pour vos données d'événement personnalisées. Cliquez sur Suivant pour continuer. - Pour Consommateur d'événement, spécifiez l'application ou le travail devant recevoir des événements. Notez que vous pouvez faire un choix dans une liste d'applications et de travaux définis. Pour cet exemple, utilisez
l'application
myappqui référence l'imageicr.io/codeengine/cron. Si vous n'avez pas encore créé votre application ou votre tâche, vous pouvez spécifier le nom de votre application ou de votre tâche et créer votre application ou créer votre tâche après avoir créé l'abonnement au programmateur périodique. Pour les applications uniquement, vous pouvez le cas échéant spécifier un chemin. Par défaut, les événements sont acheminés vers l'URL racine de l'application de destination. Vous pouvez envoyer des événements vers une autre destination dans l'application en spécifiant un chemin. Par exemple, si votre chemin d'abonnement indique/events, les évènements sont envoyés àhttps://<base application URL>/events. Cliquez sur Suivant pour continuer. - Pour Récapitulatif, vérifiez les paramètres de votre abonnement aux événements de temporisateur périodique et modifiez-les si nécessaire. Lorsque vous êtes prêt, cliquez sur Créer pour créer l'abonnement au minuteur périodique.
-
Maintenant que votre abonnement à la minuterie périodique est créé, rendez-vous sur la page Abonnements aux événements pour afficher la liste des abonnements définis.
-
Pour mettre à jour un abonnement, accédez à votre page d'abonnement à l'horloge périodique. Sur cette dernière, cliquez sur le nom de l'abonnement à mettre à jour.
-
Sur la page d'abonnement au compteur périodique, modifiez les données du message d'événement. Dans l'onglet Données d'événement personnalisées, remplacez les données d'événement spécifiées par
hello sunshine. Cliquez sur Sauvegarder pour sauvegarder vos modifications. -
Étant donné que l'application
myappfait référence à l'exemple d'applicationcron, qui imprime des informations dans les fichiers journaux, vous pouvez afficher les journaux. Dans les journaux de l'application du consommateur d'événementmyapp, vous constaterez que le message d'événement esthello sunshine. Voir Affichage des journaux d'application à partir de la console.
Abonnement à des événements de temporisateur périodique (cron) pour une application à l'aide de l'interface de ligne de commande
Avant de commencer
- Configurez votre environnement d'interface de ligne de commande Code Engine.
- Créez un projet.
- Créez une application. Par exemple, créez une application appelée
myappqui utilise l'imageicr.io/codeengine/cron. Cette image est construite à partir decron.go, disponible dans le répertoire Samples for IBM Cloud Code Engine GitHub
ibmcloud ce application create --name myapp --image icr.io/codeengine/cron
Pour connecter votre application à l'abonnement à la minuterie périodique à l'aide de l'interface de programmation, utilisez la commande ibmcloud ce sub cron create commande.
ibmcloud ce sub cron create --name NAME --destination-type APP --destination APPLICATION_NAME --schedule CRON
Par exemple, pour créer un abonnement cron qui envoie un événement à une application appelée myapp tous les jours à minuit :
ibmcloud ce sub cron create --name mycronevent --destination-type app --destination myapp --schedule '0 0 * * *'
Vous devez placer la valeur de planification entre guillemets pour qu'elle soit traitée comme une chaîne unique.
Le tableau ci-dessous récapitule les options utilisées dans l'exemple précédent avec la commande sub cron create. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce subscription cron create.
| Option | Description |
|---|---|
--name |
Nom de la source d'événement cron. Cette valeur est obligatoire. |
--destination |
Nom d'une application ou d'un travail Code Engine dans le projet en cours destiné à recevoir les événements du producteur d'événement. Cette valeur est obligatoire. |
--destination-type |
Type de la destination, en l'occurrence, app. La valeur par défaut est app. |
--schedule |
Permet de planifier la fréquence à laquelle l'événement est déclenché, au format crontab. Par exemple, indiquez */2 * * * * (au format chaîne) pour un déclenchement toutes les 2 minutes. Par défaut, l'événement cron est
déclenché toutes les minutes et utilise le fuseau horaire UTC. Pour modifier le fuseau horaire, utilisez l'option --time-zone. Cette valeur est facultative. |
- Conseils pour l'utilisation des commandes
sub cron -
- Par défaut, les événements sont acheminés vers l'URL racine de l'application de destination. Vous pouvez envoyer des événements vers une autre destination dans l'application à l'aide de l'option
--path. Par exemple, si votre abonnement indique--path /events, les évènements sont envoyés àhttps://<base application URL>/events. - La taille des données pour les événements de la minuterie périodique est limitée à un maximum de 4096 octets. Ainsi, lorsque vous utilisez l'option
--dataou--data-base64, vous pouvez envoyer 4096 octets maximum. Pour plus d'informations, voir Limites et quotas pour Code Engine. - Les abonnements cron utilisent le fuseau horaire
UTCpar défaut. Vous pouvez modifier le fuseau horaire en spécifiant l'option--time-zonedans la commandesub cron createousub cron update. Pour connaître les valeurs valables des fuseaux horaires, voir la base de données TZ. Notez que si vous créez un abonnement à l'aide dekubectlet que vous ne spécifiez pas de fuseau horaire, le fuseau horaireUTCest utilisé. - Si vous n'avez pas encore créé votre consommateur d'événement d'application ou de travail, utilisez l'option
--forceavec la commandesub cron createpour forcer la création de l'abonnement aux événements cron. Vous pouvez indiquer le nom de votre application ou travail et créer votre application ou créer votre travail après avoir créé l'abonnement cron.
- Par défaut, les événements sont acheminés vers l'URL racine de l'application de destination. Vous pouvez envoyer des événements vers une autre destination dans l'application à l'aide de l'option
Pour vérifier que votre abonnement cron a été créé, exécutez la commande ibmcloud ce sub cron get --name mycronevent.
Exemple de sortie
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2021-03-14T13:37:51-05:00
Destination Type: app
Destination: myapp
Schedule: 0 0 * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 12s pingsource-controller Updated "mycronevent" finalizers
Dans cette sortie, vous pouvez constater que l'application de destination est myapp, que la planification est 0 0 * * * (chaque jour à minuit) et que l'état Ready a pour valeur true.
Mise à jour de votre abonnement cron avec l'interface de ligne de commande
Pour mettre à jour l'abonnement cron à l'aide de l'interface de ligne de commande, utilisez la commande ibmcloud ce subscription cron update.
Par exemple, mettez à jour l'abonnement mycronevent pour modifier la planification de l'envoi d'un événement à une application appelée myapp toutes les 2 minutes.
ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'
Pour vérifier que votre abonnement cron a été mis à jour, exécutez la commande ibmcloud ce sub cron get --name mycronevent. La planification de l'abonnement est mise à jour.
Exemple de sortie
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2021-08-31T16:00:49-04:00
Destination Type: app
Destination: myapp
Schedule: */2 * * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal PingSourceSynchronized 7s (x3 over 13m) pingsource-controller PingSource adapter is synchronized
Vous voulez suivre un tutoriel ? Voir Abonnement à des événements de temporisateur périodique (cron). Vous recherchez d'autres exemples de code ? Consultez les exemples pour IBM Cloud Code Engine GitHub.
Affichage des informations d'événement pour une application à partir de la console
Pour afficher des informations sur vos abonnements à des événements,
- Sur la page Code Engine Projects, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
Si votre application imprime des informations dans les fichiers journaux, comme le fait l'exemple d'application cron, affichez les fichiers journaux de votre application client d’évènement. Voir Affichage des journaux d'application à partir de la console.
Affichage des informations d'événement pour une application à l'aide de l'interface de ligne de commande
Si votre application imprime des informations dans les fichiers journaux, comme le fait l'exemple d'application cron, affichez les fichiers journaux de votre application de consommateur d'événement à l'aide de la commande d'interface
de ligne de commande ibmcloud ce app logs. Par exemple, pour afficher les journaux de l'application que vous avez créée dans l'exemple
précédent, utilisez la commande :
ibmcloud ce application logs --application myapp
Exemple de sortie
Getting logs for all instances of application 'myapp'...
OK
myapp-mw25y-1-deployment-8579d868f4-ssfnr/user-container:
Listening on port 8080
2021-04-13 17:22:08 - Received:
URL: /
Header: Accept-Encoding=[gzip]
Header: Ce-Id=[d2faa29c-8088-410f-bb30-416085c52a0b]
Header: Ce-Source=[/apis/v1/namespaces/81fvkfqi3n6/pingsources/mycronevent]
Header: Ce-Specversion=[1.0]
Header: Ce-Time=[2021-04-13T17:22:00.059682656Z]
Header: Ce-Type=[dev.knative.sources.ping]
Header: Content-Length=[0]
Header: Forwarded=[for=172.30.136.209;proto=http, for=172.30.48.203]
Header: K-Proxy-Request=[activator]
Header: Traceparent=[00-b13196fe439b6d7d67f3205b2f655788-e9fee441cd41158c-00]
Header: User-Agent=[Go-http-client/1.1]
Header: X-B3-Sampled=[0]
Header: X-B3-Spanid=[1dd2d76079811204]
Header: X-B3-Traceid=[710b7c383682d0cd1dd2d76079811204]
Header: X-Envoy-Attempt-Count=[1]
Header: X-Envoy-Decorator-Operation=[myapp-mw25y-1.81fvkfqi3n6.svc.cluster.local:80/*]
Header: X-Envoy-Internal=[true]
Header: X-Envoy-Peer-Metadata=[ChQKDkFQUF9DT05UQUlORVJTEgIaAAoaCgpDTFVTVEVSX0lEEgwaCkt1YmVybmV0ZXMKGAoNSVNUSU9fVkVSU0lPThIHGgUxLjkuMQq+AwoGTEFCRUxTErMDKrADCh0KA2FwcBIWGhRpc3Rpby1pbmdyZXNzZ2F0ZXdheQoTCgVjaGFydBIKGghnYXRld2F5cwoUCghoZXJpdGFnZRIIGgZUaWxsZXIKNgopaW5zdGFsbC5vcGVyYXRvci5pc3Rpby5pby9vd25pbmctcmVzb3VyY2USCRoHdW5rbm93bgoZCgVpc3RpbxIQGg5pbmdyZXNzZ2F0ZXdheQoZCgxpc3Rpby5pby9yZXYSCRoHZGVmYXVsdAowChtvcGVyYXRvci5pc3Rpby5pby9jb21wb25lbnQSERoPSW5ncmVzc0dhdGV3YXlzCiAKEXBvZC10ZW1wbGF0ZS1oYXNoEgsaCTU1YjU0N2Y0ZgoSCgdyZWxlYXNlEgcaBWlzdGlvCjkKH3NlcnZpY2UuaXN0aW8uaW8vY2Fub25pY2FsLW5hbWUSFhoUaXN0aW8taW5ncmVzc2dhdGV3YXkKLwojc2VydmljZS5pc3Rpby5pby9jYW5vbmljYWwtcmV2aXNpb24SCBoGbGF0ZXN0CiIKF3NpZGVjYXIuaXN0aW8uaW8vaW5qZWN0EgcaBWZhbHNlChoKB01FU0hfSUQSDxoNY2x1c3Rlci5sb2NhbAouCgROQU1FEiYaJGlzdGlvLWluZ3Jlc3NnYXRld2F5LTU1YjU0N2Y0Zi10aHN4cAobCglOQU1FU1BBQ0USDhoMaXN0aW8tc3lzdGVtCl0KBU9XTkVSElQaUmt1YmVybmV0ZXM6Ly9hcGlzL2FwcHMvdjEvbmFtZXNwYWNlcy9pc3Rpby1zeXN0ZW0vZGVwbG95bWVudHMvaXN0aW8taW5ncmVzc2dhdGV3YXkKFwoRUExBVEZPUk1fTUVUQURBVEESAioACicKDVdPUktMT0FEX05BTUUSFhoUaXN0aW8taW5ncmVzc2dhdGV3YXk=]
Header: X-Envoy-Peer-Metadata-Id=[router~172.30.48.203~istio-ingressgateway-55b547f4f-thsxp.istio-system~istio-system.svc.cluster.local]
Header: X-Forwarded-For=[172.30.136.209, 172.30.48.203, 172.30.167.171]
Header: X-Forwarded-Proto=[http]
Header: X-Request-Id=[fe8d6cec-f0e4-47c2-b9ae-81764cb377bc]
Pour plus d'informations sur la journalisation, voir Affichage des journaux.
Vous recherchez d'autres exemples de code ? Consultez les exemples pour IBM Cloud Code Engine GitHub.
Informations d'en-tête et de corps pour les événements distribués aux applications
Tous les événements distribués aux applications sont reçus en tant que messages POST HTTP. Les événements contiennent des en-têtes HTTP qui vous aident à déterminer rapidement des informations clés sur les événements sans examiner le corps
(logique métier) de l'événement. Pour plus d'informations, voir la spécification CloudEvents.
En-têtes
Le tableau suivant décrit les en-têtes des événements de la minuterie périodique (cron):
| En-tête | Description |
|---|---|
ce-id |
Identificateur unique de l'événement, sauf si un événement est réexécuté. Dans ce cas, il se voit attribuer le même ID. |
ce-source |
Référence d'URI qui indique l'origine de cet événement au sein du producteur d'événement. Pour les événements cron, cet en-tête est une référence d'URI associée au sous-domaine du projet et au nom de l'abonnement, au format suivant
: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME]. |
ce-specversion |
Version de la spécification CloudEvents. Cette valeur est toujours 1.0. |
ce-time |
Heure à laquelle l'événement a été généré. |
ce-type |
Type de l'événement. Pour les événements cron, il s'agit de dev.knative.sources.ping. |
Exemple de sortie
ce-id: c329ed76-5004-4383-a3cc-c7a9b82e3ac6
ce-source: /apis/v1/namespaces/6b0v3x9xek5/pingsources/mycronevent
ce-specversion: 1.0
ce-time: 2021-02-26T19:19:00.497637287Z
ce-type: dev.knative.sources.ping
Corps HTTP
Le corps HTTP contient l'événement lui-même et se présente sous le format que vous avez spécifié lors de la création ou de la mise à jour de l'abonnement.
S'abonner à des événements périodiques (cron) pour une fonction
Vous pouvez utiliser les abonnements périodiques à partir de la console ou de l'interface de programmation.
Les événements sont envoyés aux fonctions sous la forme de demandes POST à l'adresse HTTP. Pour plus de détails sur les informations incluses dans un événement, voir Informations relatives aux en-têtes et au corps HTTP pour les événements.
S'abonner à des événements périodiques (cron) pour une fonction à partir de la console
Vous pouvez créer et mettre à jour des abonnements à des événements périodiques pour une fonction à partir de la console.
Avant de commencer
- Créez un projet.
- Créez une fonction. Par exemple, créez une fonction appelée
myfunqui utilise l'exemple de code en ligne suivant:
/**
* The `main` function is the entry-point into the function.
* It has one optional argument 'params', which carries all the
* parameters the function was invoked with.
*/
async function main(params) {
// add process environment variables
params.env = process.env
// print recognizable string to the log
console.log('Function invocation via cron subscription');
// log params object, so invocation can be observed in the logs
console.dir(params);
// craft a simple HTTP RC 200 response,
// which also echos the params object
response = {
statusCode: 200,
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: params
};
return response
}
Effectuez les étapes suivantes pour créer et mettre à jour un abonnement à un événement périodique pour une fonction à partir de la console.
-
Sur la page Code Engine Projects, accédez à votre projet.
-
Sur la page Présentation, cliquez sur Abonnements à des événements.
-
Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
-
Sur la page Créer un abonnement à un événement, effectuez les étapes suivantes :
- Pour leType d’évènement, sélectionnez la mosaïque de temporisateur périodique. Cliquez sur Suivant.
- Pour Général, indiquez le nom de l'abonnement au temporisateur périodique,
myptimerpar exemple. Vous pouvez le cas échéant fournir des attributs d'événement. Sachez que si le consommateur d'événement de temporisateur périodique est une application, les attributs de l'événement sont disponibles sous forme d'en-têtes HTTP. Si le consommateur d'événement est une fonction, les attributs d'événement sont disponibles en tant que paires clé-valeur dans la propriété__ce_headersde l'objetparams. Cliquez sur Suivant pour continuer. - Pour le paramètre de planification Schedule, fournissez des informations sur l'échelonnement des événements. Le producteur d'événements périodiques utilise la syntaxe crontab standard pour spécifier les détails de l'intervalle.
Choisissez votre intervalle parmi les modèles fournis ou fournissez votre propre expression cron personnalisée, telle que
0 0 * * *indiquant que l'événement doit se produire tous les jours à minuit. Dans le cas présent, sélectionnez le modèle de planification pour chaque jour, chaque heure, chaque minute. Notez que l'expression cron est générée automatiquement. Les modèles de jour, d'heure et de minute et l'expression Cron sont en temps universel coordonné (UTC). Si vous ne définissez pas la planification, cet abonnement envoie un événement toutes les minutes. Une liste des événements planifiés à venir s'affiche. Notez que ces événements sont affichés dans votre fuseau horaire. Cliquez sur Suivant pour continuer. - Pour Données d'événements personnalisées, fournissez les données à inclure dans le corps de votre message d'événement. Vous pouvez spécifier le message en texte brut ou au format base64. Dans le cas présent, spécifiez
le texte
hello strangeren tant que corps du message d'événement. Si le message est au format base64, vous pouvez faire en sorte qu'il soit décodé lors de l'envoi de l'événement. Vous pouvez également spécifier le type de contenu pour vos données d'événement personnalisées. Cliquez sur Suivant pour continuer. - Pour Event consumer, choisissez le type de composant
Functionet spécifiez la fonction de réception des événements. Notez que vous pouvez choisir parmi une liste de fonctions définies. Pour cet exemple, utilisez la fonctionmyfunqui utilise l'exemple de code en ligne. Si vous n'avez pas encore créé votre fonction, vous pouvez spécifier le nom de votre fonction et Création de charges de travail de fonction avec un code en ligne après avoir créé l'abonnement au temporisateur périodique. Cliquez sur Suivant pour continuer. - Pour Récapitulatif, vérifiez les paramètres de votre abonnement aux événements de temporisateur périodique et modifiez-les si nécessaire. Lorsque vous êtes prêt, cliquez sur Créer pour créer l'abonnement au minuteur périodique.
-
Maintenant que votre abonnement à la minuterie périodique est créé, rendez-vous sur la page Abonnements aux événements pour afficher la liste des abonnements définis.
-
Pour mettre à jour un abonnement, accédez à votre page d'abonnement à l'horloge périodique. Sur cette dernière, cliquez sur le nom de l'abonnement à mettre à jour.
-
Sur la page d'abonnement au compteur périodique, modifiez les données du message d'événement. Dans l'onglet Données d'événement personnalisé, remplacez les données d'événement par
{ "hello": "world" }et choisissezapplication/jsoncomme Type de contenu des données d'événement personnalisé. Cliquez sur Sauvegarder pour sauvegarder vos modifications. -
Etant donné que la fonction
myfunutilise l'exemple de code en ligne, qui imprime l'objetparamscomplet dans les fichiers journaux, vous pouvez afficher les journaux pour vérifier que la fonction a été appelée. Affichez les journaux de la fonction de consommateur d'événementmyfunet vérifiez que l'objetparamscontient une paire clé-valeurhello: world. Vous pouvez également voir que la zonebodyde l'objetparamscontient la valeur codée Base64.{ "hello": "world" }Voir Affichage des journaux de fonction à partir de la console.
S'abonner à des événements périodiques (cron) pour une fonction à l'aide de l'interface de programmation (CLI)
Avant de commencer
- Configurez votre environnement d'interface de ligne de commande Code Engine.
- Créez un projet.
- Créez une fonction. Par exemple, créez une fonction appelée
myfunqui utilise l'exemple de code en ligne suivant:
/**
* The `main` function is the entry-point into the function.
* It has one optional argument 'params', which carries all the
* parameters the function was invoked with.
*/
async function main(params) {
// add process environment variables
params.env = process.env
// print recognizable string to the log
console.log('Function invocation via cron subscription');
// log params object, so invocation can be observed in the logs
console.dir(params);
// craft a simple HTTP RC 200 response,
// which also echos the params object
response = {
statusCode: 200,
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: params
};
return response
}
Sauvegardez le code dans un fichier appelé sample_inline_code.js et créez la fonction à l'aide de la commande suivante:
ibmcloud ce function create --name myfun --runtime nodejs --inline-code ./sample_inline_code.js
Pour connecter votre fonction à l'abonnement à la minuterie périodique à l'aide de la CLI, utilisez la commande suivante ibmcloud ce sub cron create commande :
ibmcloud ce sub cron create --name NAME --destination-type function --destination FUNCTION_NAME --schedule CRON
Par exemple, pour créer un abonnement cron qui envoie un événement à une application appelée myfun tous les jours à minuit :
ibmcloud ce sub cron create --name mycronevent --destination-type function --destination myfun --schedule '0 0 * * *'
Vous devez placer la valeur de planification entre guillemets pour qu'elle soit traitée comme une chaîne unique.
Le tableau ci-dessous récapitule les options utilisées dans l'exemple précédent avec la commande sub cron create. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce subscription cron create.
| Option | Description |
|---|---|
--name |
Nom de la source d'événement cron. Cette valeur est obligatoire. |
--destination |
Le nom d'une application, d'une fonction ou d'un travail Code Engine dans le projet en cours pour recevoir les événements du producteur d'événements. Cette valeur est obligatoire. |
--destination-type |
Type de la destination, en l'occurrence, function. La valeur par défaut est app. |
--schedule |
Permet de planifier la fréquence à laquelle l'événement est déclenché, au format crontab. Par exemple, indiquez */2 * * * * (au format chaîne) pour un déclenchement toutes les 2 minutes. Par défaut, l'événement cron est
déclenché toutes les minutes et utilise le fuseau horaire UTC. Pour modifier le fuseau horaire, utilisez l'option --time-zone. Cette valeur est facultative. |
- Conseils pour l'utilisation des commandes
sub cron -
- La taille des données pour les événements de la minuterie périodique est limitée à un maximum de 4096 octets. Ainsi, lorsque vous utilisez l'option
--dataou--data-base64, vous pouvez envoyer 4096 octets maximum. Pour plus d'informations, voir Limites et quotas pour Code Engine. - Les abonnements cron utilisent le fuseau horaire
UTCpar défaut. Vous pouvez modifier le fuseau horaire en spécifiant l'option--time-zonedans la commandesub cron createousub cron update. Pour connaître les valeurs valables des fuseaux horaires, voir la base de données TZ. Notez que si vous créez un abonnement à l'aide dekubectlet que vous ne spécifiez pas de fuseau horaire, le fuseau horaireUTCest utilisé. - Si vous n'avez pas encore créé votre consommateur d'événement d'application ou de travail, utilisez l'option
--forceavec la commandesub cron createpour forcer la création de l'abonnement aux événements cron. Vous pouvez spécifier le nom de votre fonction Créer une fonction après avoir créé l'abonnement cron.
- La taille des données pour les événements de la minuterie périodique est limitée à un maximum de 4096 octets. Ainsi, lorsque vous utilisez l'option
Pour vérifier que votre abonnement cron a été créé, exécutez la commande ibmcloud ce sub cron get --name mycronevent.
Exemple de sortie
Getting cron event subscription 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2024-03-14T13:37:51-05:00
Destination Type: function
Destination: myfun
Schedule: 0 0 * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 20s pingsource-controller Updated "mycronevent" finalizers
Normal PingSourceSynchronized 20s pingsource-controller PingSource adapter is synchronized
Cette sortie montre que la fonction de destination est myfun, que la programmation est 0 0 * * * (tous les jours à minuit) et que l'état Prêt est true.
Mise à jour de votre abonnement cron avec l'interface de ligne de commande
Pour mettre à jour l'abonnement cron à l'aide de l'interface de ligne de commande, utilisez la commande ibmcloud ce subscription cron update.
Par exemple, mettez à jour l'abonnement mycronevent pour modifier l'horaire afin d'envoyer un événement à une fonction appelée myfun toutes les 2 minutes :
ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'
Pour vérifier que votre abonnement cron a été mis à jour, exécutez la commande ibmcloud ce sub cron get --name mycronevent. La planification de l'abonnement est mise à jour.
Exemple de sortie
Getting cron event subscription 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 37m41s
Created: 2024-03-14T14:04:51-05:00
Destination Type: function
Destination: myfun
Schedule: */2 * * * *
Time Zone: UTC
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 20s pingsource-controller Updated "mycronevent" finalizers
Normal PingSourceSynchronized 20s pingsource-controller PingSource adapter is synchronized
Vous voulez suivre un tutoriel ? Voir Abonnement à des événements de temporisateur périodique (cron). Vous recherchez d'autres exemples de code ? Consultez les exemples pour IBM Cloud Code Engine GitHub.
Visualisation des informations sur les événements d'une fonction à partir de la console
Pour afficher des informations sur vos abonnements à des événements :
- Sur la page Code Engine Projects, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
Si votre fonction imprime des informations dans des fichiers journaux, comme le fait l'exemple de la tâche codeengine, consultez les fichiers journaux de votre fonction. Voir Affichage des journaux de travail à partir de la console.
Informations d'en-tête et de corps de Cron pour les événements transmis aux fonctions
Tous les événements transmis aux fonctions sont reçus sous la forme de messages POST ( HTTP ). Les événements contiennent certains en-têtes HTTP qui vous aident à déterminer rapidement des informations clés sur les événements. HTTP sont stockés
dans la propriété __ce_headers de l'objet params avec lequel la fonction est invoquée. Pour plus d'informations, voir la spécification CloudEvents.
En-têtes
Le tableau suivant décrit les paires clé-valeur dans __ce_headers pour les événements périodiques timer (cron):
| En-tête | Description |
|---|---|
Ce-Id |
Identificateur unique de l'événement, sauf si un événement est réexécuté. Dans ce cas, il se voit attribuer le même ID. |
Ce-Source |
Référence d'URI qui indique l'origine de cet événement au sein du producteur d'événement. Pour les événements cron, cet en-tête est une référence d'URI associée au sous-domaine du projet et au nom de l'abonnement, au format suivant
: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME]. |
Ce-Specversion |
Version de la spécification CloudEvents. Cette valeur est toujours 1.0. |
Ce-Time |
Heure à laquelle l'événement a été généré. |
Ce-Type |
Type de l'événement. Pour les événements cron, il s'agit de dev.knative.sources.ping. |
Exemple de sortie
__ce_headers: {
"Ce-Id": "b861440f-0e17-44ab-9bab-826da0c9713f",
"Ce-Source": "/apis/v1/namespaces/7iuw2furi55/pingsources/mycronevent",
"Ce-Specversion": "1.0",
"Ce-Time": "2024-06-02T10:56:00.062572905Z",
"Ce-Type": "dev.knative.sources.ping"
}
Corps HTTP
Le corps du message HTTP contient les données de l'événement personnalisé dans le format spécifié lors de la création ou de la mise à jour de l'abonnement. Vous pouvez accéder aux données d'événement personnalisé à partir de la propriété
body dans l'objet params.
Exemple d'objet params pour un appel d'événement avec un fichier d'événements personnalisé défini sur hello stranger et Content Type of custom event data défini sur text/plain:
{
"__ce_headers": {
"Ce-Id": "b861440f-0e17-44ab-9bab-826da0c9713f",
"Ce-Source": "/apis/v1/namespaces/7iuw2furi55/pingsources/mycronevent",
"Ce-Specversion": "1.0",
"Ce-Time": "2024-06-02T10:56:00.062572905Z",
"Ce-Type": "dev.knative.sources.ping",
"Content-Length": "14",
"Content-Type": "text/plain"
},
"body": "hello stranger"
}
La valeur de body est Base64 codée, si Type de contenu des données d'événement personnalisé est défini sur application/json.
Abonnement à des événements de temporisateur périodique (cron) pour un travail
Vous pouvez utiliser les abonnements périodiques à partir de la console ou de l'interface de programmation.
Votre travail reçoit les événements en tant que variables d'environnement. Pour plus d'informations sur les variables d'environnement envoyées par cron, voir Variables d'environnement pour les événements.
Abonnement à des événements de temporisateur périodique (cron) pour un travail depuis la console
Vous pouvez créer et mettre à jour des abonnements à des événements périodiques pour un travail à partir de la console.
Avant de commencer
- Créez un projet.
- Créez un travail. Par exemple, créez un travail appelé
myjobqui utilise l'imagecodeengine. Cette image est construite à partir decodeengine.go, disponible dans le répertoire Samples for IBM Cloud Code Engine GitHub.
Effectuez les étapes suivantes pour créer et mettre à jour un abonnement à un événement périodique pour un travail à partir de la console.
-
Sur la page Code Engine Projects, accédez à votre projet.
-
Sur la page Présentation, cliquez sur Abonnements à des événements.
-
Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
-
Sur la page Créer un abonnement à un événement, effectuez les étapes suivantes :
- Pour Général, indiquez le nom de l'abonnement au temporisateur périodique,
myptimer2par exemple. Vous pouvez le cas échéant fournir des attributs d'événement. Sachez que si le consommateur d'événement de temporisateur périodique est une application, les attributs de l'événement sont disponibles sous forme d'en-têtes HTTP. Si le consommateur d'événement est un travail, les attributs de l'événement sont disponibles sous forme de variables d'environnement. Cliquez sur Suivant pour continuer. - Pour le paramètre de planification Schedule, fournissez des informations sur l'échelonnement des événements. Le producteur d'événements périodiques utilise la syntaxe crontab standard pour spécifier les détails de l'intervalle.
Choisissez votre intervalle parmi les modèles fournis ou fournissez votre propre expression cron personnalisée, telle que
0 0 * * *indiquant que l'événement doit se produire tous les jours à minuit. Dans le cas présent, sélectionnez le modèle de planification pour chaque jour, chaque heure, chaque minute. Notez que l'expression cron est générée automatiquement. Les modèles de jour, d'heure et de minute et l'expression Cron sont en temps universel coordonné (UTC). Si vous ne définissez pas la planification, cet abonnement envoie un événement toutes les minutes. Une liste des événements planifiés à venir s'affiche. Notez que ces événements sont affichés dans votre fuseau horaire. Cliquez sur Suivant pour continuer. - Pour Données d'événements personnalisées, fournissez les données à inclure dans le corps de votre message d'événement. Vous pouvez spécifier le message en texte brut ou au format base64. Dans le cas présent, spécifiez
le texte
hello strangeren tant que corps du message d'événement. Si le message est au format base64, vous pouvez faire en sorte qu'il soit décodé lors de l'envoi de l'événement. Vous pouvez également spécifier le type de contenu pour vos données d'événement personnalisées. Cliquez sur Suivant pour continuer. - Pour Consommateur d'événement, spécifiez l'application ou le travail devant recevoir des événements. Notez que vous pouvez faire un choix dans une liste d'applications et de travaux définis. Pour cet exemple, utilisez
le travail
myjobqui référence l'imageicr.io/codeengine/codeengine. Si vous n'avez pas encore créé votre tâche, vous pouvez spécifier le nom de votre tâche et la créer après avoir créé l'abonnement au programmateur périodique. Cliquez sur Suivant pour continuer. - Pour Récapitulatif, vérifiez les paramètres de votre abonnement aux événements de temporisateur périodique et modifiez-les si nécessaire. Lorsque vous êtes prêt, cliquez sur Créer pour créer l'abonnement au minuteur périodique.
- Pour Général, indiquez le nom de l'abonnement au temporisateur périodique,
-
Maintenant que votre abonnement à la minuterie périodique est créé, rendez-vous sur la page Abonnements aux événements pour afficher la liste des abonnements définis.
-
Pour mettre à jour un abonnement, accédez à votre page d'abonnement à l'horloge périodique. Sur cette dernière, cliquez sur le nom de l'abonnement à mettre à jour.
-
Sur la page d'abonnement au compteur périodique, modifiez les données du message d'événement. Dans l'onglet Données d'événement personnalisées, remplacez les données d'événement spécifiées par
hello sunshine. Cliquez sur Sauvegarder pour sauvegarder vos modifications. -
Etant donné que le travail
myjobfait référence à l'exemple d'applicationcodeenginequi imprime des informations dans des fichiers journaux, ces derniers sont consultables. En affichant les journaux du travail du consommateur d'événementmyjob, vous constaterez que le message d'événement esthello sunshine. Voir Affichage des journaux de travail à partir de la console.
Abonnement à des événements de temporisateur périodique (cron) pour un travail à l'aide de l'interface de ligne de commande
Avant de commencer
- Configurez votre environnement d'interface de ligne de commande Code Engine.
- Créez un projet.
- Créez un travail. Par exemple, créez un travail appelé
myjobqui utilise l'imageicr.io/codeengine/codeengine. Cette image est construite à partir decodeengine.go, disponible dans le répertoire Samples for IBM Cloud Code Engine GitHub.
ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine
Pour connecter votre travail à l'abonnement périodique avec la CLI en utilisant la commande ibmcloud ce sub cron create à l'aide
de la commande
ibmcloud ce sub cron create --name NAME --destination-type job --destination JOB_NAME --schedule CRON
Par exemple, pour créer un abonnement cron qui envoie un événement à une application appelée myjob toutes les 5 minutes,
ibmcloud ce sub cron create --name mycronevent --destination-type job --destination myjob --schedule '*/5 * * * *' --data '{ "message": "Hello world!" }' --content-type application/json
Vous devez placer la valeur de planification entre guillemets pour qu'elle soit traitée comme une chaîne unique.
Le tableau ci-dessous récapitule les options utilisées avec la commande sub cron create dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce subscription cron create.
| Option | Description |
|---|---|
--name |
Nom de la source d'événement cron. |
--destination-type |
Type de la destination, en l'occurrence, job. |
--destination |
Nom d'un travail Code Engine dans le projet en cours qui doit recevoir les événements du producteur d'événement. |
--schedule |
Permet de planifier la fréquence à laquelle l'événement est déclenché, au format crontab. Par exemple, indiquez */2 * * * * (au format chaîne) pour un déclenchement toutes les 2 minutes. Par défaut, l'événement cron est
déclenché toutes les minutes et utilise le fuseau horaire UTC. Pour modifier le fuseau horaire, utilisez l'option --time-zone. Cette valeur est facultative. |
- Conseils pour l'utilisation des commandes
sub cron -
- La taille des données pour les événements de la minuterie périodique est limitée à un maximum de 4096 octets. Ainsi, lorsque vous utilisez l'option
--dataou--data-base64, vous pouvez envoyer 4096 octets maximum. Pour plus d'informations, voir Limites et quotas pour Code Engine. - Les abonnements cron utilisent le fuseau horaire
UTCpar défaut. Vous pouvez modifier le fuseau horaire en spécifiant l'option--time-zonedans la commandesub cron createousub cron update. Pour connaître les valeurs valables des fuseaux horaires, voir la base de données TZ. Notez que si vous créez un abonnement à l'aide dekubectlet que vous ne spécifiez pas de fuseau horaire, le fuseau horaireUTCest utilisé. - Si vous n'avez pas encore créé votre consommateur d'événement d'application ou de travail, utilisez l'option
--forceavec la commandesub cron createpour forcer la création de l'abonnement aux événements cron. Vous pouvez indiquer le nom de votre application ou travail et créer votre application ou créer votre travail après avoir créé l'abonnement cron.
- La taille des données pour les événements de la minuterie périodique est limitée à un maximum de 4096 octets. Ainsi, lorsque vous utilisez l'option
Pour vérifier que votre abonnement cron a été créé, exécutez ibmcloud ce sub cron get --name mycronevent.
Exemple de sortie
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 54s
Created: 2021-04-13T11:38:50-05:00
Destination Type: job
Destination: myjob
Schedule: */5 * * * *
Time Zone: UTC
Content Type: application/json
Data: { "message": "Hello world!" }
Ready: true
Events:
Type Reason Age Source Messages
Normal FinalizerUpdate 12s pingsource-controller Updated "mycronevent" finalizers
Dans cette sortie, vous pouvez constater que le travail de destination est myjob, que la planification est */5 * * * * (toutes les 5 minutes) et que l'état Ready a pour valeur true.
Les exécutions de travail qui sont créées par des abonnements sont supprimées au bout de 10 minutes.
Mise à jour de l'abonnement cron avec l'interface de ligne de commande (travail)
Pour mettre à jour l'abonnement cron à l'aide de l'interface de ligne de commande, utilisez la commande ibmcloud ce subscription cron update.
Par exemple, mettez à jour l'abonnement mycronevent pour modifier la planification de l'envoi d'un événement à une application appelée myapp toutes les 2 minutes.
ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'
Pour vérifier que votre abonnement cron a été mis à jour, exécutez la commande ibmcloud ce sub cron get --name mycronevent. La planification de l'abonnement est mise à jour.
Exemple de sortie
Getting cron source 'mycronevent'...
OK
Name: mycronevent
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2m21s
Created: 2021-08-31T16:00:49-04:00
Destination Type: job
Destination: myjob
Schedule: */2 * * * *
Time Zone: UTC
Content Type: application/json
Data: { "message": "Hello world!" }
Ready: true
Events:
Type Reason Age Source Messages
Normal PingSourceSynchronized 7s (x3 over 13m) pingsource-controller PingSource adapter is synchronized
Affichage des informations d'événement pour un travail à partir de la console
Pour afficher des informations sur vos abonnements à des événements,
- Sur la page Code Engine Projects, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
Si votre travail imprime des informations dans les fichiers journaux, comme le fait l'exemple de travail codeengine, affichez les fichiers journaux de votre travail de consommateur d'événement. Voir Affichage des journaux de travail à partir de la console.
Affichage des informations d'événement pour un travail à l'aide de l'interface de ligne de commande
Si votre travail imprime des informations dans les fichiers journaux, comme c'est le cas de l'exemple de travail codeengine, vous pouvez localiser l'exécution de travail qui a été créée à partir de l'événement de temporisateur
périodique (cron), puis afficher les journaux d'exécution de travail. Par exemple, pour trouver l'exécution du travail dans l'exemple précédent,
ibmcloud ce jobrun list
Exemple de sortie
Listing job runs...
OK
Name Failed Pending Requested Running Succeeded Unknown Age
myjob-kd829 0 0 0 0 1 0 43s
Affichez les journaux pour l'exécution du travail en indiquant le nom d'exécution du travail.
ibmcloud ce jobrun logs --jobrun myjob-kd829
Exemple de sortie
Hello from helloworld! I'm a batch job! Index: 0
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DATA={ "message": "Hello world!" }
CE_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_SOURCE=/apis/v1/namespaces/1234abcd1a2/pingsources/mycroneventjob
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T17:41:00.429658447Z
CE_TYPE=dev.knative.sources.ping
CONTENT_TYPE=application/json
HOME=/root
HOSTNAME=myjob-mpps4-0-0
JOB_INDEX=0
KUBERNETES_PORT=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_HOST=172.21.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
Notez que les informations du journal des travaux ne durent qu'une heure. Pour plus d'informations sur la journalisation, voir Affichage des journaux.
Pour plus d'informations sur les variables d'environnement envoyées par cron, voir Variables d'environnement pour les événements.
Vous recherchez d'autres exemples de code ? Consultez les exemples pour IBM Cloud Code Engine GitHub.
Variables d'environnement pour les événements distribués aux travaux
Tous les événements distribués à un travail sont reçus en tant que variables d'environnement. Ces variables d'environnement comportent le préfixe CE_ et sont basées sur la spécification CloudEvents.
Chaque événement contient un certain nombre de variables d'environnement communes qui s'affichent chaque fois que l'événement est distribué à un travail. Le jeu de variables réel de chaque événement peut comporter plus d'options. Pour plus
d'informations, voir les attributs CloudEvent.
Le tableau suivant décrit les variables d'environnement qui sont propres aux événements cron.
| Variable | Description |
|---|---|
CE_DATA |
Données (corps) de l'événement. Voir CE_DATA pour les événements cron. |
CE_ID |
Identificateur unique de l'événement, sauf si un événement est réexécuté. Dans ce cas, il se voit attribuer le même ID. |
CE_SOURCE |
Référence d'URI qui indique l'origine de cet événement au sein du producteur d'événement. Pour les événements cron, il s'agit d'une référence d'URI associée au sous-domaine du projet et au nom de l'abonnement, au format suivant : /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME]. |
CE_SPECVERSION |
Version de la spécification CloudEvents. Cette valeur est toujours 1.0. |
CE_TIME |
Heure à laquelle l'événement a été généré. |
CE_TYPE |
Type de l'événement. Pour les événements cron, il s'agit de dev.knative.sources.ping. |
CE_DATAvariable d'environnement
Pour les événements périodiques, la variable d'environnement CE_DATA contient l'événement lui-même et est au format spécifié lors de la création ou de la mise à jour de l'abonnement.
Exemple de sortie
CE_DATA={ "message": "Hello world!" }
CE_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_SOURCE=/apis/v1/namespaces/1234abcd1a2/pingsources/mycroneventjob
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T17:41:00.429658447Z
CE_TYPE=dev.knative.sources.ping
Définition d'attributs d'événements supplémentaires
Lorsque vous créez un abonnement, vous pouvez définir des attributs d'événement supplémentaires à inclure dans les événements générés. Ces attributs d'événement sont similaires à tous les autres attributs CloudEvent dans la distribution
d'événements. Si vous choisissez de spécifier le nom d'un attribut CloudEvent existant, il remplace la valeur d'origine incluse dans l'événement. Pour plus d'informations, voir Puis-je utiliser d'autres spécifications CloudEvents ?
A partir de la console, vous pouvez spécifier les attributs de l'événement sous forme de paires clé-valeur dans l'onglet Général pour votre abonnement aux événements de temporisateur périodique (cron).
Pour définir des attributs supplémentaires l'aide de l'interface de ligne de commande, utilisez les options --extension avec la commande d'interface de ligne de commande ibmcloud ce sub cron create.
Suppression d'un abonnement
Lorsque vous n'avez plus besoin d'un abonnement au temporisateur périodique (cron), vous pouvez le supprimer.
Suppression d'un abonnement de la console
- Sur la page Code Engine Projects, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
- Dans la liste des abonnements, supprimez l'abonnement que vous souhaitez supprimer de votre application ou travail.
La suppression d'une application ou d'un travail n'entraîne pas la suppression de l'abonnement.
Suppression d'un abonnement avec l'interface de ligne de commande
Vous pouvez supprimer un abonnement en exécutant la commande ibmcloud ce sub cron delete ou ibmcloud ce sub cos delete.
Par exemple, supprimez un abonnement cron appelé mycronevent2 :
ibmcloud ce subscription cron delete --name mycronevent2
La suppression d'une application ou d'un travail n'entraîne pas la suppression de l'abonnement. Au lieu de cela, dans l'interface de ligne de commande, son état Prêt (Ready) devient false car l'abonnement dépend de la disponibilité
de l'application ou du travail. Si vous recréez l'application ou le travail (ou une autre application du même nom), votre abonnement est reconnecté et l'état Ready prend la valeur true.