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.

  1. Accédez à la page « Accorder une autorisation de service » dans le tableau de bord IAM.
  2. Dans Service source, sélectionnez Code engine.
  3. Sélectionnez Ressources basées sur les attributs sélectionnés et Instance de service source. Sélectionnez ensuite un projet Code Engine.
  4. Dans Service cible, sélectionnez Cloud Object Storage.
  5. Sélectionnez Ressources basées sur les attributs sélectionnés et Instance de service. Sélectionnez ensuite votre instance IBM Cloud Object Storage.
  6. 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

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.

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.

  2. Sur la page Présentation, cliquez sur Abonnements à des événements.

  3. Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.

  4. Dans la page Créer un abonnement d’évènement, procédez comme suit.

    1. Pour leType d’évènement, sélectionnez la mosaïque Cloud Object Storage. Cliquez sur Suivant.
    2. 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.
    3. 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.
    4. 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 myapp qui référence l'image icr.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.
    5. 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 .
  5. Maintenant que votre abonnement Object Storage est créé, accédez à la page Abonnements d’évènements pourafficher la liste des abonnements définis.

  6. 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.

  7. A partir de votre page d'abonnement Object Storage, modifions le type de changement d'objet par les modifications d'objet delete uniquement. Dans l'onglet Détails de l'évènement de compartiment, sélectionnez uniquement le type delete de changement d'objet. Cliquez sur Sauvegarder pour sauvegarder vos modifications.

  8. Étant donné que l'application myapp fait référence à l'exemple d'application cos-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

  1. 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
    
  2. Une fois votre abonnement créé, exécutez la commande subscription cos get pour obtenir plus de détails sur votre abonnement.

    ibmcloud ce subscription cos get --name mycosevent
    

    Exemple 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,

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. 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.

Fichiers d'en-tête pour les événements
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][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][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.

Champs du corps de IBM Cloud Object Storage
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

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 :

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.

  2. Sur la page Présentation, cliquez sur Abonnements à des événements.

  3. Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.

  4. Sur la page « Créer un abonnement à un événement », procédez comme suit :

    1. Pour leType d’évènement, sélectionnez la mosaïque Cloud Object Storage. Cliquez sur Suivant.

    2. 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.

    3. 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 *abc pour indiquer tous les objets commençant par abc ). En outre, les noms de fichiers incluent l'extension du fichier (par exemple, si vous spécifiez json comme suffixe, l'événement sera traité pour les fichiers tels que abc.json, mais pas pour abcjson.txt).

      Cliquez sur Suivant pour continuer.

    4. 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 myjob qui référence l'image icr.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.

    5. 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 .

  5. Maintenant que votre abonnement Object Storage est créé, accédez à la page Abonnements d’évènements pourafficher la liste des abonnements définis.

  6. 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.

  7. A partir de votre page d'abonnement Object Storage, modifions le type de changement d'objet par les modifications d'objet delete uniquement. Dans l'onglet Détails de l'évènement de marché, sélectionnez uniquement le type de modification d'objet delete. Cliquez sur Sauvegarder pour sauvegarder vos modifications.

  8. Étant donné que le travail myjob fait référence à l'exemple de travail icr.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

  1. 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
    
  2. Une fois votre abonnement créé, exécutez la commande subscription cos get pour obtenir plus de détails sur votre abonnement.

    ibmcloud ce subscription cos get --name mycosevent
    

    Exemple 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,

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. 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.

Variables d'environnement pour les événements
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][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][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.

Variables d'environnement pour IBM Cloud Object Storage
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

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
  3. 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.