Cómo trabajar con el generador de sucesos de IBM Cloud Object Storage

La suscripción de IBM Cloud Object Storage escucha si hay cambios en un grupo de Object Storage. Cuando se crea una suscripción en un grupo, la app o el trabajo recibe un suceso independiente para cada cambio correcto en ese grupo. Puede suscribirse a distintos, sucesos como por ejemplo a sucesos write, a sucesos delete o a sucesos all. Puede crear como máximo 100 suscripciones de Object Storage por proyecto.

Configuración del productor de sucesos de IBM Cloud Object Storage

Para empezar, debe crear una instancia de servicio de IBM Cloud Object Storage y crear un grupo regional en una de las regiones soportadas para Code Engine.

Su grupo de Object Storage debe ser un grupo regional que se encuentre en la misma región que su proyecto de Code Engine. No se da soporte a grupos entre regiones ni a grupos de un solo sitio. Para obtener más información sobre la configuración del productor de sucesos de IBM Cloud Object Storage, consulte Cómo empezar con Object Storage.

Si la aplicación o el trabajo que está recibiendo sucesos desea hablar con un servicio utilizando la red privada y el servicio tiene puntos finales private y direct (como por ejemplo IBM Cloud Object Storage), se deben utilizar los puntos finales de direct.

Asignación del rol de Gestor de notificaciones a Code Engine

Para poder crear una suscripción de Object Storage, debe asignar el rol de Gestor de notificaciones a Code Engine. Como Gestor de notificaciones, Code Engine puede ver, modificar y suprimir notificaciones para un grupo de Object Storage.

Solo los administradores de la cuenta pueden asignar el rol de Gestor de notificaciones.

Cuando asigne el rol de Gestor de notificaciones al proyecto, puede crear suscripciones de sucesos para cualquier grupo regional de su instancia de Object Storage que se encuentre en la misma región que el proyecto.

  1. Accede a la página « Conceder una autorización de servicio » en el panel de control de IAM.
  2. En Servicio de origen, seleccione Code Engine.
  3. Seleccione Recursos basados en atributos seleccionados e Instancia de servicio de origen. A continuación, seleccione un proyecto de Code Engine.
  4. En Servicio de destino, seleccione Cloud Object Storage.
  5. Seleccione Recursos basados en atributos seleccionados e Instancia de servicio. A continuación, seleccione la instancia de IBM Cloud Object Storage.
  6. Asigne el rol de Gestor de notificaciones y pulse Autorizar.

También puede asignar el rol de Gestor de notificaciones al proyecto con el mandato ibmcloud iam authorization-policy-create.

Suscripción a sucesos de IBM Cloud Object Storage para una aplicación

Puede trabajar con suscripciones de IBM Cloud Object Storage desde la consola o con la CLI de forma que los sucesos se envíen a una aplicación de Code Engine.

De forma predeterminada, los sucesos se direccionan al URL raíz de la aplicación de destino. Puede enviar sucesos a un destino diferente dentro de la app utilizando la opción --path. Por ejemplo, si la suscripción indica --path /event, el suceso se envía a https://<base application URL>/events.

Los sucesos se envían a las aplicaciones como solicitudes HTTP POST. Para obtener más información, consulte cabeceras HTTP e información de cuerpo para sucesos.

Suscripción a sucesos de IBM Cloud Object Storage para una aplicación desde la consola

Puede crear y actualizar suscripciones de sucesos de IBM Cloud Object Storage para una aplicación desde la consola.

Antes de empezar

Complete los pasos siguientes para crear y actualizar una suscripción de sucesos de IBM Cloud Object Storage para una aplicación desde la consola.

  1. Desde la página «Proyectos» de Code Engine, accede a tu proyecto.

  2. En la página Visión general, pulse Suscripciones de sucesos.

  3. En la página Suscripciones de sucesos, pulse Crear para crear la suscripción.

  4. En la página Crear una suscripción de sucesos, siga los pasos siguientes.

    1. En Tipo de suceso, seleccione el mosaico Cloud Object Storage. Pulse Siguiente.
    2. En General, indique un nombre para la suscripción de Object Storage, por ejemplo, mycos. Opcionalmente, puede proporcionar atributos de suceso. Tenga en cuenta que si el consumidor de sucesos de Object Storage es una aplicación, los atributos de suceso están disponibles como cabeceras HTTP. Si el consumidor de sucesos es un trabajo, los atributos de sucesos están disponibles como variables de entorno. Pulse Siguiente para continuar.
    3. En Detalles de sucesos de grupo, seleccione o escriba el nombre de un grupo existente de Object Storage. Especifique los tipos de cambios para el objeto, y opcionalmente indique un prefijo o sufijo de nombre de objeto para filtrar objetos en el grupo, para desencadenar sucesos para la suscripción. Pulse Siguiente para continuar.
    4. En Consumidor de sucesos, especifique la aplicación que recibirá los sucesos. Observe que puede elegir entre una lista de aplicaciones y trabajos definidos. Para este ejemplo, utilice la aplicación myapp que hace referencia a la imagen icr.io/codeengine/cos-listen. Si la aplicación no existe, puede indicar el nombre de la aplicación y crear su aplicación después de crear la suscripción de Object Storage. Solo para las aplicaciones, puede especificar opcionalmente una vía de acceso. De forma predeterminada, los sucesos se direccionan al URL raíz de la aplicación de destino. Puede enviar sucesos a un destino diferente dentro de la app especificando una vía de acceso. Por ejemplo, si la vía de acceso de suscripción especifica /events, los sucesos se envían a https://<base application URL>/events. Pulse Siguiente para continuar.
    5. En Resumen, revise los valores de la suscripción de sucesos de Object Storage y haga los cambios necesarios. Cuando esté preparado, pulse Crear para crear la suscripción de Object Storage.
  5. Ahora que se ha creado la suscripción de Object Storage, vaya a la página de suscripciones de sucesos a ver una lista de las suscripciones definidas.

  6. Para actualizar una suscripción, vaya a la página de suscripción de Object Storage. En la página Suscripciones de sucesos, pulse el nombre de la suscripción que desea actualizar.

  7. En la página de suscripciones de Object Storage, cambiamos el tipo de cambio de objeto a solo cambios de objeto de delete. En la pestaña Detalles de sucesos de grupo, seleccione solo el tipo de cambio de objeto delete. Pulse Guardar para guardar los cambios.

  8. Dado que la aplicación myapp hace referencia a la aplicación de ejemplo cos-listen, que imprime información en los archivos de registro, puede ver los registros. Después de suprimir un objeto del grupo, puede ver un suceso referente a la supresión en los registros de la aplicación. Consulte Visualización de registros de aplicaciones desde la consola.

Una vez que se ha definido una suscripción de suceso de IBM Cloud Object Storage que hace referencia a un grupo específico, no se puede actualizar esta suscripción para que utilice otro grupo distinto. Debe crear una nueva suscripción para referirla al grupo que desee.

Suscripción a sucesos de IBM Cloud Object Storage para una aplicación con la CLI

Antes de empezar

  1. Conecte la aplicación al productor de sucesos de IBM Cloud Object Storage utilizando el mandato ibmcloud ce subscription cos create. Por ejemplo:

    ibmcloud ce subscription cos create --name mycosevent --destination-type app --destination myapp --bucket mybucket
    
  2. Después de crear la suscripción, ejecute el mandato subscription cos get para obtener detalles sobre la suscripción.

    ibmcloud ce subscription cos get --name mycosevent
    

    Salida de ejemplo

    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
    

Ahora, cada vez que cambia el grupo, la app recibe notificación.

¿Desea probar una guía de aprendizaje? Consulte Suscripción a sucesos de Object Storage. ¿Desea ver más ejemplos de código? Consulte el repositorio de muestras de IBM Cloud Code Engine GitHub.

Visualización de la información de sucesos para una aplicación desde la consola

Para ver información sobre las suscripciones de sucesos,

  1. Desde la página «Proyectos» de Code Engine, accede a tu proyecto.
  2. En la página Visión general, pulse Suscripciones de sucesos para ver una lista de suscripciones definidas.

Si la aplicación imprime información en los archivos de registro, como lo hace la aplicación cos-listen de ejemplo, visualice los archivos de registro de la aplicación consumidora de sucesos. Consulte Visualización de registros de aplicaciones desde la consola.

Visualización de información de sucesos para una aplicación con la CLI

Si la aplicación imprime información en los archivos de registro, como la aplicación cos-listen, utilice el mandato de CLI ibmcloud ce app logs para ver la información que se ha enviado.

Para poder ver la información de sucesos para la aplicación, primero debe crear un suceso de Object Storage. Realice un cambio en el grupo.

Para ver los registros de la aplicación que ha creado en el ejemplo anterior,

ibmcloud ce application logs --application myapp

Salida de ejemplo

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"}

Ten en cuenta que la información de registro de las aplicaciones solo se conserva durante una hora. Para obtener más información sobre el registro, consulte Visualización de registros.

¿Desea ver más ejemplos de código? Consulte el repositorio de muestras de IBM Cloud Code Engine GitHub.

Información de cuerpo y cabecera de IBM Cloud Object Storage para sucesos entregados a aplicaciones

Todos los sucesos que se entregan a las aplicaciones se reciben como mensajes HTTP. Los sucesos contienen determinadas cabeceras HTTP que le ayudan a determinar rápidamente los bits clave de información sobre los sucesos sin mirar el cuerpo (lógica empresarial) del suceso. Para obtener más información, consulta la especificación « CloudEvents ».

Cabeceras

En la tabla siguiente se describen las cabeceras para sucesos de Object Storage.

Archivos de cabecera para eventos
Cabecera Descripción
ce-id Un identificador exclusivo para el suceso, a menos que se vuelva a reproducir un suceso, en cuyo caso se le asigna el mismo ID.
ce-source Una referencia de URI que indica dónde se ha originado este suceso en el generador de sucesos. Para sucesos de Object Storage, este valor es https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME] donde [BUCKET_NAME] es el nombre del grupo que contiene el objeto.
ce-specversion La versión de la especificación de CloudEvents. Este valor siempre es 1.0.
ce-subject Indica el recurso sobre el que se relaciona el suceso. Para los sucesos de Object Storage, este es el nombre del objeto (o clave) sobre el que se ha actuado.
ce-time La hora a la que se ha generado el suceso.
ce-type El tipo del suceso. Para sucesos de Object Storage, es com.ibm.cloud.cos.document.[ACTION] donde [ACTION] es write o delete. Cuando se produce una creación o actualización de un suceso, se utiliza una acción write para ce-type.

Ejemplo

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

Cuerpo HTTP

El cuerpo HTTP para un suceso de IBM Cloud Object Storage se encuentra en el formato siguiente,

{
  "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"
}

La siguiente tabla describe el campo de cuerpo.

Campos del cuerpo para IBM Cloud Object Storage
Campo Cuerpo Descripción
bucket El nombre de grupo del objeto que está relacionado con el suceso.
endpoint Este valor siempre es una serie vacía.
key El nombre del objeto en el grupo.
operation El tipo de suceso o la operación, escriba Object:Write u Object:Delete. Los sucesos de creación o carga se etiquetan como operaciones Object:Write.
Notification.bucket_name El nombre de grupo del objeto que está relacionado con el suceso.
Notification.content_type El tipo MIME del objeto, por ejemplo, text/html.
Notification.event_type El tipo de suceso o la operación, escriba Object:Write u Object:Delete. Los sucesos de creación o carga se etiquetan como operaciones Object:Write.
Notification.format Este valor siempre es 2.0.
Notification.object_etag Valor exclusivo que cambia cada vez que se modifica el objeto. Este valor no se visualiza para una operación Object:Delete.
Notification.object_length El tamaño del objeto, en bytes.
Notification.request_id El ID exclusivo relacionado con el cambio de objeto.
Notification.request_time Hora a la que se ha producido el cambio de objeto.

Suscripción a sucesos de IBM Cloud Object Storage para un trabajo

Puede trabajar con suscripciones de IBM Cloud Object Storage desde la consola o con la CLI de forma que los sucesos se envíen a un trabajo de Code Engine.

Cuando se crea una suscripción de sucesos para un trabajo, se crea una ejecución de trabajo para cada suceso que se desencadena y esta ejecución de trabajo tiene las variables de entorno que están relacionadas con el trabajo. Para obtener más información sobre las variables de entorno que envía IBM Cloud Object Storage, consulte Variables de entorno para sucesos.

Suscripción a sucesos de IBM Cloud Object Storage para un trabajo desde la consola

Puede crear y actualizar suscripciones de sucesos de IBM Cloud Object Storage para un trabajo desde la consola.

Antes de empezar

Sigue estos pasos para crear o actualizar una suscripción a eventos de « IBM Cloud Object Storage » para un trabajo desde la consola:

  1. Desde la página «Proyectos» de Code Engine, accede a tu proyecto.

  2. En la página Visión general, pulse Suscripciones de sucesos.

  3. En la página Suscripciones de sucesos, pulse Crear para crear la suscripción.

  4. En la página «Crear una suscripción a un evento», sigue estos pasos:

    1. En Tipo de suceso, seleccione el mosaico Cloud Object Storage. Pulse Siguiente.

    2. En General, indique un nombre para la suscripción de Object Storage, por ejemplo, mycos-job. Opcionalmente, puede proporcionar atributos de suceso. Cuando el consumidor de sucesos es un trabajo, los atributos de suceso están disponibles como variables de entorno. Pulse Siguiente para continuar.

    3. Para obtener detalles sobre eventos de cubo, seleccione o escriba el nombre de un cubo de Object Storage existente y especifique los tipos de cambios para su objeto en los que desea activar eventos.

      Para el tipo de cambio de objeto, especifique cuándo recibir eventos para acciones en su objeto Object Storage ; puede seleccionar uno o ambos tipos de cambios de objeto:

      • Utilice Crear y actualizar para recibir un evento cada vez que se cree un nuevo objeto o se actualice un objeto existente.
      • Utilice Eliminar para recibir una notificación cada vez que se elimine un objeto existente de su cubo.

      También puede proporcionar opcionalmente un prefijo o sufijo de nombre de objeto para filtrar objetos en el depósito y activar eventos para la suscripción. Especifique los valores de prefijo del nombre del objeto o sufijo del nombre del objeto para indicar cadenas que coincidan con el comienzo (prefijo) o el final (sufijo) de los nombres de los objetos para los que desea recibir eventos. El valor limita los objetos de su cubo de Object Storage que desencadenan eventos a los nombres de archivo que empiezan o acaban con el prefijo o sufijo especificado. No utilice caracteres comodín ni expresiones regulares; especifique solo texto sin formato para el prefijo y el sufijo (por ejemplo, especifique abc, no *abc para indicar todos los objetos que comienzan por abc ). Además, los nombres de archivo incluyen la extensión del archivo (por ejemplo, si especifica json como sufijo, el evento se gestionará para archivos como abc.json, pero no para abcjson.txt).

      Pulse Siguiente para continuar.

    4. En Consumidor de sucesos, especifique el trabajo que recibirá sucesos. Observe que puede elegir entre una lista de trabajos definidos. Para este ejemplo, utilice el trabajo myjob que aparece en la imagen icr.io/codeengine/codeengine. Si el trabajo no existe, puede especificar el nombre del trabajo y crear su trabajo después de crear la suscripción de Object Storage. Pulse Siguiente para continuar.

    5. En Resumen, revise los valores de la suscripción de sucesos de Object Storage y haga los cambios necesarios. Cuando esté preparado, pulse Crear para crear la suscripción de Object Storage.

  5. Ahora que se ha creado la suscripción de Object Storage, vaya a la página de suscripciones de sucesos a ver una lista de las suscripciones definidas.

  6. Para actualizar una suscripción, vaya a la página de suscripción de Object Storage. En la página Suscripciones de sucesos, pulse el nombre de la suscripción que desea actualizar.

  7. En la página de suscripciones de Object Storage, cambiamos el tipo de cambio de objeto a solo cambios de objeto de delete. En la pestaña Detalles de sucesos de grupo, seleccione solo el tipo de cambio de objeto delete. Pulse Guardar para guardar los cambios.

  8. Dado que el trabajo myjob hace referencia al trabajo de ejemplo icr.io/codeengine/codeengine, que imprime información en los archivos de registro, puede ver los registros. Después de suprimir un objeto del grupo, puede ver un suceso referente a la supresión en los registros de la ejecución del trabajo. Consulte Visualización de registros de trabajo desde la consola.

Las ejecuciones de trabajo creadas por suscripciones se suprimen al cabo de 10 minutos.

Una vez que se ha definido una suscripción de suceso de IBM Cloud Object Storage que hace referencia a un grupo específico, no se puede actualizar esta suscripción para que utilice otro grupo distinto. Debe crear una nueva suscripción para referirla al grupo que desee.

Suscripción a sucesos de IBM Cloud Object Storage para un trabajo con la CLI

Antes de empezar

  1. Conecte el trabajo al productor de sucesos de IBM Cloud Object Storage utilizando el mandato ibmcloud ce subscription cos create.

    ibmcloud ce subscription cos create --name mycosevent --destination-type job --destination myjob --bucket mybucket
    
  2. Después de crear la suscripción, ejecute el mandato subscription cos get para obtener detalles sobre la suscripción.

    ibmcloud ce subscription cos get --name mycosevent
    

    Salida de ejemplo

    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
    

Ahora, cada vez que cambia el grupo, el trabajo recibe notificación.

Las ejecuciones de trabajo creadas por suscripciones se suprimen al cabo de 10 minutos.

¿Desea probar una guía de aprendizaje? Consulte Suscripción a sucesos de Object Storage. ¿Desea ver más ejemplos de código? Consulte el repositorio de muestras de IBM Cloud Code Engine GitHub.

Visualización de información de sucesos para un trabajo desde la consola

Para ver información sobre las suscripciones de sucesos,

  1. Desde la página «Proyectos» de Code Engine, accede a tu proyecto.
  2. En la página Visión general, pulse Suscripciones de sucesos para ver una lista de suscripciones definidas.

Si el trabajo imprime información en los archivos de registro, como hace el trabajo de ejemplo codeengine, visualice los archivos de registro para la aplicación consumidora de sucesos. Consulte Visualización de registros de trabajo desde la consola.

Visualización de la información de sucesos para un trabajo con la CLI

Si el trabajo imprime información en los archivos de registro, como hace el trabajo codeengine, utilice el mandato de la CLI de ibmcloud ce jobrun logs para ver la información que se ha enviado.

Para poder ver la información de sucesos para el trabajo, primero debe crear un suceso de Object Storage. Realice un cambio en el grupo.

Para encontrar la ejecución del trabajo para el trabajo en el ejemplo anterior,

ibmcloud ce jobrun list

Salida de ejemplo

Listing job runs...
OK
Name         Failed  Pending  Requested  Running  Succeeded  Unknown  Age
myjob-pnz6m  0       0        0          0        1          0        39s

Visualice los registros de la ejecución del trabajo especificando el nombre de la ejecución del trabajo.

ibmcloud ce jobrun logs --jobrun myjob-pnz6m

Salida de ejemplo

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

Ten en cuenta que la información de registro de las ejecuciones de los trabajos solo se conserva durante una hora. Para obtener más información sobre el registro, consulte Visualización de registros.

¿Desea ver más ejemplos de código? Consulte el repositorio de muestras de IBM Cloud Code Engine GitHub.

Variables de entorno para sucesos entregados a trabajos

Todos los sucesos que se entregan a un trabajo se reciben como variables de entorno. Estas variables de entorno incluyen el prefijo « CE_ » y se basan en la especificación CloudEvents.

Cada suceso contiene algunas variables de entorno comunes que aparecen cada vez que se entrega el suceso a un trabajo. El conjunto real de variables en cada suceso puede incluir más opciones. Para obtener más información y conocer otras opciones de variables de entorno, consulta los atributos de CloudEvent.

En la tabla siguiente se describen las variables de entorno que son específicas de los sucesos de IBM Cloud Object Storage.

Variables de entorno para sucesos
Variable Descripción
CE_DATA Los datos (cuerpo) para el suceso. Consulte CE_DATA para sucesos de Object Storage.
CE_ID Un identificador exclusivo para el suceso, a menos que se vuelva a reproducir un suceso, en cuyo caso se le asigna el mismo ID.
CE_SOURCE Una referencia de URI que indica dónde se ha originado este suceso en el generador de sucesos. Para sucesos de Object Storage, este valor es https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME] donde [BUCKET_NAME] es el nombre del grupo que contiene el objeto.
CE_SPECVERSION La versión de la especificación de CloudEvents. Este valor siempre es 1.0.
CE_TIME La hora a la que se ha generado el suceso.
CE_TYPE El tipo del suceso. Para sucesos de Object Storage, es com.ibm.cloud.cos.document.[ACTION] donde [ACTION] es write o delete.

Variable de entorno de CE_DATA

Tenga en cuenta que el ejemplo siguiente para CE_DATA está formateado para facilitar la lectura.

{
"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"}

En la tabla siguiente se describe el atributo de entorno CE_DATA.

Variables de entorno para IBM Cloud Object Storage
Atributo Descripción
bucket El nombre de grupo del objeto que está relacionado con el suceso.
endpont Este valor siempre es una serie vacía.
key El nombre del objeto en el grupo.
operaton El tipo de suceso o la operación, escriba Object:Write u Object:Delete. Los sucesos de creación o carga se etiquetan como operaciones Object:Write.
Notification.bucket_name El nombre de grupo del objeto que está relacionado con el suceso.
Notification.content_type El tipo MIME del objeto, por ejemplo, text/rtf.
Notification.event_type El tipo de suceso o la operación, escriba Object:Write u Object:Delete. Los sucesos de creación o carga se etiquetan como operaciones Object:Write.
Notification.format Este valor siempre es 2.0.
Notification.object_etag Valor exclusivo que cambia cada vez que se modifica el objeto. Este valor no se visualiza para una operación Object:Delete.
Notification.object_length El tamaño del objeto, en bytes.
Notification.request_id El ID exclusivo relacionado con el cambio de objeto.
Notification.request_time Hora a la que se ha producido el cambio de objeto.

Salida de ejemplo

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

Definición de atributos de suceso adicionales

Cuando cree una suscripción, puede definir atributos adicionales de CloudEvent para que se incluyan en cualquier suceso que se genere. Estos atributos parecen similares a los demás atributos de CloudEvent en la entrega de sucesos. Si elige especificar el nombre de un atributo CloudEvent existente, prevalece sobre el valor original incluido en el suceso.

Para definir atributos de adición, utilice las opciones --extension con el mandato de CLI ibmcloud ce subscription cos create.

Para obtener más información, consulte ¿Puedo utilizar otras especificaciones de CloudEvents?

Supresión de un suscripción

Cuando ya no necesite una suscripción de IBM Cloud Object Storage, puede suprimirla.

Supresión de una suscripción desde la consola

  1. Desde la página «Proyectos» de Code Engine, accede a tu proyecto.
  2. En la página Visión general, pulse Suscripciones de sucesos para ver una lista de suscripciones definidas.
  3. En la lista de suscripciones, suprima la suscripción que desea eliminar de la aplicación o del trabajo.

Si suprime una aplicación o un trabajo asociado a la suscripción, la suscripción no se suprime. Si vuelve a crear la aplicación o el trabajo (u otra aplicación o trabajo con el mismo nombre), la suscripción se vuelve a conectar a la aplicación o trabajo.

Supresión de una suscripción con la CLI

Puede suprimir una suscripción de IBM Cloud Object Storage ejecutando el mandato ibmcloud ce subscription cos delete.

Por ejemplo, utilice el mandato siguiente para suprimir una suscripción de IBM Cloud Object Storage denominada mycosevent,

ibmcloud ce subscription cos delete --name mycosevent

Si suprime una aplicación o un trabajo asociado a la suscripción, la suscripción no se suprime. En vez de eso, pasa a estado preparado de false porque la suscripción depende de la disponibilidad de la aplicación o trabajo. Si vuelve a crear la aplicación o el trabajo (u otra aplicación o trabajo con el mismo nombre), la suscripción se vuelve a conectar y el estado Preparado es true.