Utilisation d'un producteur d'événement IBM Cloud Object Storage
L'abonnement IBM Cloud Object Storage est à l'écoute des changements apportés à un compartiment Object Storage. Lorsque vous créez un abonnement à un compartiment, votre application ou votre travail reçoit un événement distinct pour chaque modification
réussie de ce compartiment. Vous pouvez vous abonner à différents événements, notamment des événements write, delete ou all. Vous pouvez créer au maximum 100 abonnements Object Storage par projet.
Configuration du producteur d’évènements IBM Cloud Object Storage
Pour commencer, vous devez Créer une instance de service IBM Cloud Object Storage et Créer un compartiment régional dans l'une des régions prises en charge pour Code Engine.
Votre compartiment Object Storage doit être un compartiment régional se trouvant dans la même région que votre projet Code Engine. Les compartiments interrégions ou monosites ne sont pas pris en charge. Pour plus d'informations sur la configuration du fournisseur d’évènements IBM Cloud Object Storage, voir Démarrer avec Object Storage.
Si votre application ou votre travail qui reçoit des évènements souhaite communiquer avec un service à l'aide d'un réseau privé et que le service possède aussi bien des nœuds finaux private et direct (tels que IBM Cloud
Object Storage), les nœuds finaux direct doivent alors être utilisés.
Affectation du rôle Gestionnaire de notifications à Code Engine
Pour que vous puissiez créer un abonnement Object Storage, vous devez affecter le rôle Gestionnaire de notifications à Code Engine. En tant que gestionnaire de notifications, Code Engine peut afficher, modifier et supprimer des notifications pour un compartiment Object Storage.
Seuls les administrateurs de compte peuvent affecter le rôle Gestionnaire de notifications.
Lorsque vous affectez le rôle Gestionnaire de notifications à votre projet, vous pouvez ensuite créer des abonnements d'événement pour n'importe quel compartiment régional de votre instance Object Storage qui se trouve dans la même région que votre projet.
- Accédez à la page « Accorder une autorisation de service » dans le tableau de bord IAM.
- Dans Service source, sélectionnez Code engine.
- Sélectionnez Ressources basées sur les attributs sélectionnés et Instance de service source. Sélectionnez ensuite un projet Code Engine.
- Dans Service cible, sélectionnez Cloud Object Storage.
- Sélectionnez Ressources basées sur les attributs sélectionnés et Instance de service. Sélectionnez ensuite votre instance IBM Cloud Object Storage.
- Affectez le rôle Gestionnaire de notifications et cliquez sur Autoriser.
Vous pouvez également affecter le rôle Gestionnaire de notifications à votre projet à l'aide de la commande ibmcloud iam authorization-policy-create.
Abonnement aux évènements IBM Cloud Object Storage pour une application
Vous pouvez utiliser des abonnements IBM Cloud Object Storage à partir de la console ou avec l'interface de ligne de commande afin que les évènements soient envoyés à une application Code Engine.
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 /event, l'événement est envoyé à https://<base application URL>/events.
Les événements sont envoyés aux applications en tant que demandes HTTP POST. Pour plus d'informations sur les en-têtes et le corps HTTP, voir Informations relatives aux en-têtes et au corps HTTP pour les événements.
Abonnement aux évènements IBM Cloud Object Storage pour une application à partir de la console
Vous pouvez créer et mettre à jour des abonnements d’évènements IBM Cloud Object Storage 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/cos-event. Cette image est issue decos-listen.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub.
Suivez les étapes suivantes pour créer et mettre à jour un abonnement d’évènement IBM Cloud Object Storage pour une application à partir de la console.
-
Depuis la page « Projets » d' Code Engine, 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.
-
Dans la page Créer un abonnement d’évènement, procédez comme suit.
- Pour leType d’évènement, sélectionnez la mosaïque Cloud Object Storage. Cliquez sur Suivant.
- DansGénéral, fournissez un nom pour l'abonnement Object Storage , par exemple,
mycos. Vous pouvez le cas échéant fournir des attributs d'événement. Notez que si le consommateur d’évènements Object Storage est une application, les attributs d'évènement sont disponibles en tant qu'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 desDétails sur le compartiment de l'évènement, sélectionnez ou entrez le nom d'un compartiment Object Storage existant. Indiquez les types de modification de votre objet et indiquez éventuellement un préfixe ou un suffixe de nom d'objet pour filtrer les objets dans le compartiment qui doivent déclencher des évènements pour l'abonnement. Cliquez sur Suivant pour continuer.
- Pour leConsommateur d’évènement, spécifiez l'application qui va recevoir les é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/cos-listen. Si votre application n'existe pas, vous pouvez fournir le nom de votre application et créer votre application après avoir créé l'abonnement Object Storage . 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 le récapitulatif, vérifiez les paramètres de votre abonnement d’évènement Object Storage et faites des modifications si nécessaire. Lorsque vous êtes prêt, cliquez sur créer pour créer l'abonnement Object Storage .
-
Maintenant que votre abonnement Object Storage est créé, accédez à la page Abonnements d’évènements pourafficher la liste des abonnements définis.
-
Pour mettre à jour un abonnement, accédez à votre page d'abonnement Object Storage. Sur cette dernière, cliquez sur le nom de l'abonnement à mettre à jour.
-
A partir de votre page d'abonnement Object Storage, modifions le type de changement d'objet par les modifications d'objet
deleteuniquement. Dans l'onglet Détails de l'évènement de compartiment, sélectionnez uniquement le typedeletede changement d'objet. Cliquez sur Sauvegarder pour sauvegarder vos modifications. -
Étant donné que l'application
myappfait référence à l'exemple d'applicationcos-listen, qui imprime des informations dans les fichiers journaux, vous pouvez afficher les journaux. Une fois qu'un objet est supprimé du compartiment, vous pouvez voir un évènement qui matérialise la suppression dans les journaux de l'application. Voir Affichage des journaux d'application à partir de la console.
Après avoir défini un abonnement d’évènement IBM Cloud Object Storage qui fait référence à un compartiment spécifique, vous ne pouvez plus mettre à jour cet abonnement pour utiliser un autre compartiment. Vous devez créer un abonnement pour référencer le compartiment que vous souhaitez.
Abonnement aux évènements IBM Cloud Object Storage pour une application avec l'interface de ligne de commande
Avant de commencer
-
Configurez votre environnement d'interface de ligne de commande Code Engine.
-
Permet de créer une application. Par exemple, créez une application appelée
myappqui utilise l'imageicr.io/codeengine/cos-listen. Cette image est issue decos-listen.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub. Par exemple :ibmcloud ce application create --name myapp --image icr.io/codeengine/cos-listen
-
Connectez votre application au producteur d’évènements IBM Cloud Object Storage à l'aide de la commande
ibmcloud ce subscription cos create. Par exemple :ibmcloud ce subscription cos create --name mycosevent --destination-type app --destination myapp --bucket mybucket -
Une fois votre abonnement créé, exécutez la commande
subscription cos getpour obtenir plus de détails sur votre abonnement.ibmcloud ce subscription cos get --name mycoseventExemple de sortie
Getting COS source 'mycosevent'... OK Name: mycosevent ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 59s Created: 2021-03-01T20:08:36-06:00 Destination: App:myapp Bucket: mybucket Event Type: all Ready: true Conditions: Type OK Age Reason CosConfigured true 55s Ready true 55s ReadyForEvents true 55s SinkProvided true 55s Events: Type Reason Age Source Messages Normal FinalizerUpdate 61s cossource-controller Updated "mycosevent" finalizers
Désormais, chaque fois que vous modifiez votre compartiment, votre application reçoit une notification.
Vous voulez suivre un tutoriel ? Reportez-vous au tutoriel décrivant l'abonnement à des événements Object Storage. Vous recherchez d'autres exemples de code ? Consultez le répertoire Samples for 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,
- Depuis la page « Projets » d' Code Engine, 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 cos-listen, 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'application cos-listen, utilisez la commande d'interface de ligne de commande ibmcloud ce app logs pour afficher les informations qui ont été envoyées.
Avant de pouvoir afficher les informations d'événement pour votre application, vous devez d'abord créer un événement Object Storage. Apportez une modification à votre compartiment.
Pour afficher les journaux de l'application que vous avez créée dans l'exemple précédent,
ibmcloud ce application logs --application myapp
Exemple de sortie
Getting logs for all instances of application 'myapp'...
OK
myapp-a2mvv-1-deployment-d97dcd6cf-zc9lg/user-container:
Listening on port 8080
2021-04-13 19:43:45 - Received:
Body: {"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Write","format":"2.0","object_etag":"2944035e54ee1bdc423848c8eaf05e86","object_length":"4642","object_name":"NOtes.rtf","request_id":"6abc7123-382d-4115-98e8-7568b2cc03f8","request_time":"2021-04-13T19:43:36.610Z"},"operation":"Object:Write"}
Notez que les informations de journalisation relatives aux applications ne sont conservées que pendant une heure. Pour plus d'informations sur la journalisation, voir Affichage des journaux.
Vous recherchez d'autres exemples de code ? Consultez le répertoire Samples for IBM Cloud Code Engine GitHub.
Informations d'en-tête et de corps IBM Cloud Object Storage pour les événements distribués aux applications
Tous les événements distribués aux applications sont reçus en tant que messages 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, consultez la spécification « CloudEvents ».
En-têtes
Le tableau suivant décrit les en-têtes pour les événements Object Storage.
| 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 Object Storage, cette valeur est https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME] où
[BUCKET_NAME] est le nom du compartiment qui contient l'objet. |
ce-specversion |
Version de la spécification CloudEvents. Cette valeur est toujours 1.0. |
ce-subject |
Indique la ressource sur laquelle porte l'événement. Pour les événements Object Storage, il s'agit du nom (ou de la clé) de l'objet sur lequel a porté l'action. |
ce-time |
Heure à laquelle l'événement a été généré. |
ce-type |
Type de l'événement. Pour les évènements Object Storage, il s'agit de com.ibm.cloud.cos.document.[ACTION] où [ACTION] est write ou delete. Lorsqu'une création ou une mise à jour d'un
évènement se produit, une action write est utilisée pour ce-type. |
Exemple
ce-id: 3fb2c04e-a660-4640-8899-b82efb8169b6
ce-source: https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
ce-specversion: 1.0
ce-subject: object-69-144
ce-time: 2021-08-17T20:22:02.917Z
ce-type: com.ibm.cloud.cos.document.delete
Corps HTTP
Le corps HTTP pour un événement IBM Cloud Object Storage est au format suivant :
{
"bucket": "mybucket",
"endpoint": "",
"key": "object-69-144",
"notification": {
"bucket_name": "mybucket",
"content_type": "image/svg+xml",
"event_type": "Object:Delete",
"format": "2.0",
"object_etag": "f3a9dbde30fdf48abc23e5f8b485d6e5",
"object_length": "1064391",
"object_name": "object-69-144",
"request_id": "67a2048a-abcd-abcd-9e0c-968744094b85",
"request_time": "2021-08-17T20:22:02.917Z"
},
"operation": "Object:Delete"
}
Le tableau suivant décrit la zone de corps.
| Zone de corps | Description |
|---|---|
bucket |
Nom de compartiment de l'objet associé à l'événement. |
endpoint |
Cette valeur est toujours une chaîne vide. |
key |
Nom de l'objet dans le compartiment. |
operation |
Type d'événement ou opération, Object:Write ou Object:Delete. Les événements de création ou de transfert sont marqués comme des opérations Object:Write. |
Notification.bucket_name |
Nom de compartiment de l'objet associé à l'événement. |
Notification.content_type |
Type MIME de l'objet, par exemple, text/html. |
Notification.event_type |
Type d'événement ou opération, Object:Write ou Object:Delete. Les événements de création ou de transfert sont marqués comme des opérations Object:Write. |
Notification.format |
Cette valeur est toujours 2.0. |
Notification.object_etag |
Valeur unique qui change chaque fois que l'objet est modifié. Cette valeur ne s'affiche pas pour une opération Object:Delete. |
Notification.object_length |
Taille de l'objet, en octets. |
Notification.request_id |
ID unique associé au changement d'objet. |
Notification.request_time |
Heure à laquelle l'objet a été changé. |
Abonnement aux évènements IBM Cloud Object Storage pour un travail
Vous pouvez utiliser des abonnements IBM Cloud Object Storage à partir de la console ou avec l'interface de ligne de commande afin que les évènements soient envoyés à une tâcheCode Engine.
Lorsque vous créez un abonnement d'évènement pour un travail, une exécution de travail est créée pour chaque évènement déclenché et cette exécution de travail comporte les variables d'environnement associées au travail. Pour plus d'informations sur les variables d'environnement envoyées par IBM Cloud Object Storage, voir Variables d'environnement pour les événements.
Abonnement aux évènements IBM Cloud Object Storage pour un travail à partir de la console
Vous pouvez créer et mettre à jour des abonnements d’évènements IBM Cloud Object Storage 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'imageicr.io/codeengine/codeengine. Cette image est issue decodeengine.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub.
Suivez les étapes ci-dessous pour créer ou mettre à jour un abonnement aux événements « IBM Cloud Object Storage » pour une tâche depuis la console :
-
Depuis la page « Projets » d' Code Engine, 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 », procédez comme suit :
-
Pour leType d’évènement, sélectionnez la mosaïque Cloud Object Storage. Cliquez sur Suivant.
-
DansGénéral, fournissez un nom pour l'abonnement Object Storage , par exemple,
mycos-job. Vous pouvez le cas échéant fournir des attributs d'événement. Lorsque le consommateur d’évènements est un travail, les attributs d'évènement sont disponibles en tant que variables d'environnement. Cliquez sur Suivant pour continuer. -
Pour les détails de l'événement Bucket, sélectionnez ou saisissez le nom d'un bucket Object Storage existant et indiquez les types de modifications de votre objet pour lesquels vous souhaitez déclencher des événements.
Pour le type de changement d'objet, spécifiez quand recevoir des événements pour des actions sur votre objet Object Storage ; vous pouvez sélectionner l'un ou l'autre type de changement d'objet, ou les deux :
- Utilisez Créer et mettre à jour pour recevoir un événement à chaque fois qu'un nouvel objet est créé ou qu'un objet existant est mis à jour.
- Utilisez l'option Supprimer pour recevoir un événement chaque fois qu'un objet existant est supprimé de votre seau.
Vous pouvez également fournir un préfixe ou un suffixe de nom d'objet pour filtrer les objets dans le seau afin de déclencher des événements pour l'abonnement. Spécifiez les valeurs Préfixe du nom d'objet ou Suffixe du nom d'objet pour indiquer les chaînes qui correspondent au début (préfixe) ou à la fin (suffixe) des noms d'objets pour lesquels vous souhaitez recevoir des événements. Cette valeur limite les objets de votre panier Object Storage qui déclenchent des événements aux noms de fichiers qui commencent ou se terminent par le préfixe ou le suffixe spécifié. N'utilisez pas de caractères génériques ou d'expressions régulières ; indiquez uniquement du texte en clair pour le préfixe et le suffixe (par exemple, indiquez
abc, et non*abcpour indiquer tous les objets commençant parabc). En outre, les noms de fichiers incluent l'extension du fichier (par exemple, si vous spécifiezjsoncomme suffixe, l'événement sera traité pour les fichiers tels queabc.json, mais pas pourabcjson.txt).Cliquez sur Suivant pour continuer.
-
Pour leConsommateur d’évènement, indiquez le travail pour recevoir des évènements. Notez que vous pouvez choisir parmi une liste de travaux définis. Pour cet exemple, utilisez le travail
myjobqui référence l'imageicr.io/codeengine/codeengine. Si votre travail n'existe pas, vous pouvez spécifier le nom de votre travail et créer votre travail après avoir créé l'abonnement Object Storage. Cliquez sur Suivant pour continuer. -
Pour le récapitulatif, vérifiez les paramètres de votre abonnement d’évènement Object Storage et faites des modifications si nécessaire. Lorsque vous êtes prêt, cliquez sur créer pour créer l'abonnement Object Storage .
-
-
Maintenant que votre abonnement Object Storage est créé, accédez à la page Abonnements d’évènements pourafficher la liste des abonnements définis.
-
Pour mettre à jour un abonnement, accédez à votre page d'abonnement Object Storage. Sur cette dernière, cliquez sur le nom de l'abonnement à mettre à jour.
-
A partir de votre page d'abonnement Object Storage, modifions le type de changement d'objet par les modifications d'objet
deleteuniquement. Dans l'onglet Détails de l'évènement de marché, sélectionnez uniquement le type de modification d'objetdelete. Cliquez sur Sauvegarder pour sauvegarder vos modifications. -
Étant donné que le travail
myjobfait référence à l'exemple de travailicr.io/codeengine/codeengine, qui imprime des informations dans les fichiers journaux, vous pouvez afficher les journaux. Une fois qu'un objet a été supprimé du compartiment, vous pouvez voir un évènement pour la suppression dans les journaux d'exécution de travaux. Voir Affichage des journaux de travail à partir de la console.
Les exécutions de travail qui sont créées par des abonnements sont supprimées au bout de 10 minutes.
Après avoir défini un abonnement d’évènement IBM Cloud Object Storage qui fait référence à un compartiment spécifique, vous ne pouvez plus mettre à jour cet abonnement pour utiliser un autre compartiment. Vous devez créer un abonnement pour référencer le compartiment que vous souhaitez.
Abonnement aux événements IBM Cloud Object Storage pour un travail avec l'interface de ligne de commande
Avant de commencer
-
Configurez votre environnement d'interface de ligne de commande Code Engine.
-
Permet de créer un travail. Par exemple, créez un travail appelé
myjobqui utilise l'imageicr.io/codeengine/codeengine. Cette image est issue decodeengine.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub.ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine
-
Connectez votre travail au producteur d’évènements IBM Cloud Object Storage à l'aide de la commande
ibmcloud ce subscription cos create.ibmcloud ce subscription cos create --name mycosevent --destination-type job --destination myjob --bucket mybucket -
Une fois votre abonnement créé, exécutez la commande
subscription cos getpour obtenir plus de détails sur votre abonnement.ibmcloud ce subscription cos get --name mycoseventExemple de sortie
Getting COS source 'mycosevent'... OK Name: mycosevent ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 59s Created: 2021-03-01T20:08:36-06:00 Destination Type: job Destination: myjob Bucket: mybucket Event Type: all Ready: true Conditions: Type OK Age Reason CosConfigured true 55s Ready true 55s ReadyForEvents true 55s SinkProvided true 55s Events: Type Reason Age Source Messages Normal FinalizerUpdate 61s cossource-controller Updated "mycosevent" finalizers
Désormais, chaque fois que vous modifiez votre compartiment, votre travail reçoit une notification.
Les exécutions de travail qui sont créées par des abonnements sont supprimées au bout de 10 minutes.
Vous voulez suivre un tutoriel ? Reportez-vous au tutoriel décrivant l'abonnement à des événements Object Storage. Vous recherchez d'autres exemples de code ? Consultez le répertoire Samples for IBM Cloud Code Engine GitHub.
Affichage des informations d'événement pour un travail à partir de la console
Pour afficher des informations sur vos abonnements à des événements,
- Depuis la page « Projets » d' Code Engine, 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, vous pourrez alors voir les fichiers journaux pour votre application client 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 aux fichiers journaux, comme le fait le travail codeengine, utilisez la commande CLI ibmcloud ce jobrun logs pour voir les informations qui ont été envoyées.
Avant de pouvoir afficher les informations d'événement pour votre travail, vous devez d'abord créer un événement Object Storage. Apportez une modification à votre compartiment.
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-pnz6m 0 0 0 0 1 0 39s
Affichez les journaux pour l'exécution du travail en indiquant le nom d'exécution du travail.
ibmcloud ce jobrun logs --jobrun myjob-pnz6m
Exemple de sortie
Getting logs for all instances of job run 'myjob-pnz6m'...
Getting jobrun 'myjob-pnz6m'...
Getting instances of jobrun 'myjob-pnz6m'...
OK
myjob-pnz6m-0-0/myjob:
Hello from helloworld! I'm a batch job! Index: 0
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DATA={"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Delete","format":"2.0","object_length":"4642","object_name":"Notes.rtf","request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b","request_time":"2021-04-13T20:10:37.631Z"},"operation":"Object:Delete"}
CE_ID=b59727ee-9c4e-446a-9261-5616f6d1283b
CE_SOURCE=https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T20:10:37.631Z
CE_TYPE=com.ibm.cloud.cos.document.delete
CONTENT_TYPE=application/json
HOME=/root
HOSTNAME=myjob-pnz6m-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
Veuillez noter que les informations de journalisation relatives à l'exécution des tâches ne sont conservées que pendant une heure. Pour plus d'informations sur la journalisation, voir Affichage des journaux.
Vous recherchez d'autres exemples de code ? Consultez le répertoire Samples for 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 sont précédées du préfixe « CE_ » et s'appuient 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 et pour découvrir d'autres options de variables d'environnement, consultez les attributs de la commande « CloudEvent ».
Le tableau suivant décrit les variables d'environnement qui sont propres aux événements IBM Cloud Object Storage.
| Variable | Description |
|---|---|
CE_DATA |
Données (corps) de l'événement. Voir CE_DATA pour les événements Object Storage. |
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 Object Storage, cette valeur est https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME] où
[BUCKET_NAME] est le nom du compartiment qui contient l'objet. |
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 Object Storage, il s'agit de com.ibm.cloud.cos.document.[ACTION] où [ACTION] est write ou delete. |
CE_DATAvariable d'environnement
L'exemple suivant qui concerne CE_DATA a été formaté de manière à être plus lisible.
{
"bucket":"mybucket",
"endpoint":"",
"key":"Notes.rtf",
"notification": {
"bucket_name":"mybucket",
"content_type":"text/rtf",
"event_type":"Object:Delete",
"format":"2.0",
"object_length":"4642",
"object_name":"Notes.rtf",
"request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b",
"request_time":"2021-04-13T20:10:37.631Z"
},
"operation":"Object:Delete"}
Le tableau suivant décrit l'attribut d'environnement CE_DATA.
| Attribut | Description |
|---|---|
bucket |
Nom de compartiment de l'objet associé à l'événement. |
endpont |
Cette valeur est toujours une chaîne vide. |
key |
Nom de l'objet dans le compartiment. |
operaton |
Type d'événement ou opération, Object:Write ou Object:Delete. Les événements de création ou de transfert sont marqués comme des opérations Object:Write. |
Notification.bucket_name |
Nom de compartiment de l'objet associé à l'événement. |
Notification.content_type |
Type MIME de l'objet, par exemple, text/rtf. |
Notification.event_type |
Type d'événement ou opération, Object:Write ou Object:Delete. Les événements de création ou de transfert sont marqués comme des opérations Object:Write. |
Notification.format |
Cette valeur est toujours 2.0. |
Notification.object_etag |
Valeur unique qui change chaque fois que l'objet est modifié. Cette valeur ne s'affiche pas pour une opération Object:Delete. |
Notification.object_length |
Taille de l'objet, en octets. |
Notification.request_id |
ID unique associé au changement d'objet. |
Notification.request_time |
Heure à laquelle l'objet a été changé. |
Exemple de sortie
CE_DATA={"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Delete","format":"2.0","object_length":"4642","object_name":"Notes.rtf","request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b","request_time":"2021-04-13T20:10:37.631Z"},"operation":"Object:Delete"}
CE_ID=b59727ee-9c4e-446a-9261-5616f6d1283b
CE_SOURCE=https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T20:10:37.631Z
CE_TYPE=com.ibm.cloud.cos.document.delete
Définition d'attributs d'événements supplémentaires
Lorsque vous créez un abonnement, vous pouvez définir des attributs CloudEvent supplémentaires à inclure dans les événements générés. Ces attributs 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 définir des attributs d'ajout, utilisez les options --extension dans la commande d'interface de ligne de commande ibmcloud ce subscription cos create.
Pour plus d'informations, voir Puis-je utiliser d'autres spécifications CloudEvents ?
Suppression d'un abonnement
Lorsque vous n'avez plus besoin d'un abonnement IBM Cloud Object Storage, vous pouvez le supprimer.
Suppression d'un abonnement de la console
- Depuis la page « Projets » d' Code Engine, 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.
Si vous supprimez une application ou un travail associé à l'abonnement, l'abonnement n'est pas supprimé. Si vous recréez l'application ou le travail (ou une autre application ou un autre travail portant le même nom), votre abonnement se reconnecte à l'application ou au travail.
Suppression d'un abonnement avec l'interface de ligne de commande
Vous pouvez supprimer un abonnement IBM Cloud Object Storage en exécutant la commande ibmcloud ce subscription cos delete.
Par exemple, utilisez la commande suivante pour supprimer un abonnement IBM Cloud Object Storage appelé mycosevent,
ibmcloud ce subscription cos delete --name mycosevent
Si vous supprimez une application ou un travail associé à l'abonnement, l'abonnement n'est pas supprimé. Au lieu de cela, il passe à l'état prêt de 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 ou un autre travail portant le même nom), votre abonnement se reconnecte et l'état Prêt est true.