Trabalhando com o produtor de eventos do IBM Cloud Object Storage

A assinatura do IBM Cloud Object Storage atende mudanças em um depósito do Object Storage. Ao criar uma assinatura para um depósito, o seu app recebe um evento separado para cada mudança bem-sucedida para esse depósito. É possível assinar eventos diferentes, como eventos write, delete ou all. É possível criar, no máximo, 100 assinaturas do Object Storage por projeto.

Configurando o produtor de eventos do IBM Cloud Object Storage

Para começar, deve-se criar uma instância de serviço do IBM Cloud Object Storage e criar um depósito regional em uma das regiões suportadas para o Code Engine.

O seu depósito do Object Storage deve ser um depósito regional localizado na mesma região de seu projeto Code Engine. Os depósitos de região cruzada e de local único não são suportados. Para obter mais informações sobre como configurar o produtor de eventos do IBM Cloud Object Storage, consulte Introdução ao Object Storage.

Se o seu aplicativo ou tarefa que está recebendo eventos quiser se comunicar com um serviço usando rede privada e o serviço tiver os terminais private e direct (como IBM Cloud Object Storage), os terminais direct deverão ser usados.

Atribuindo a função de Gerenciador de notificações ao Code Engine

Para que seja possível criar uma assinatura do Object Storage, deve-se designar a função de Gerenciador de notificações ao Code Engine. Como um Gerenciador de notificações, o Code Engine pode visualizar, modificar e excluir notificações para um depósito do Object Storage.

Somente administradores de conta podem designar a função Gerenciador de Notificações.

Ao designar a função de Gerenciador de notificações ao seu projeto, é possível criar inscrições de evento para todos os depósitos regionais em sua instância do Object Storage que estão na mesma região do seu projeto.

  1. Acesse a página “ Conceder uma autorização de serviço ” no site Painel do IAM.
  2. Em Serviço de origem, selecione Code Engine.
  3. Selecione Recursos baseados em atributos selecionados e Instância de serviço de origem. Em seguida, selecione um projeto do Code Engine.
  4. Em Serviço de destino, selecione Cloud Object Storage.
  5. Selecione Recursos com base em atributos selecionados e Instância de serviço. Em seguida, selecione a sua instância do IBM Cloud Object Storage.
  6. Designem a função Gerenciador de notificações e clique em Autorizar.

Também é possível designar a função de Gerenciador de notificações para o seu projeto usando o comando ibmcloud iam authorization-policy-create.

Assinando eventos do IBM Cloud Object Storage para um aplicativo

É possível trabalhar com assinaturas do IBM Cloud Object Storage por meio do console ou com a CLI para que os eventos sejam enviados para um aplicativo Code Engine.

Por padrão, os eventos são encaminhados para a URL raiz do aplicativo de destino. É possível enviar eventos para um destino diferente dentro do app, usando a opção --path. Por exemplo, se a sua assinatura especificar --path /event, o evento será enviado para https://<base application URL>/events.

Os eventos são enviados para aplicativos como solicitações de POST HTTP. Para obter mais informações, consulte Informações de cabeçalhos e de corpo de HTTP para eventos.

Assinando os eventos do IBM Cloud Object Storage para um aplicativo por meio do console

É possível criar e atualizar assinaturas de eventos do IBM Cloud Object Storage para um aplicativo por meio do console.

Antes de Iniciar

Conclua as etapas a seguir para criar e atualizar uma assinatura de evento IBM Cloud Object Storage para um aplicativo por meio do console.

  1. Na página “Projetos” do Code Engine, acesse o seu projeto.

  2. A partir da página Visão Geral, clique em Assinaturas de eventos.

  3. A partir da página de Assinaturas de eventos, clique em Criar para criar sua assinatura.

  4. Na página Criar uma página de assinatura de eventos, conclua as etapas a seguir.

    1. Para Tipo de evento, selecione o tile Cloud Object Storage. Clique em Avançar.
    2. Para Geral, forneça um nome para a assinatura do Object Storage, por exemplo, mycos. É possível, opcionalmente, fornecer atributos de eventos. Note que se o consumidor de eventos do Object Storage for um aplicativo, os atributos do evento estarão disponíveis como cabeçalhos HTTP. Se o consumidor do evento for uma tarefa, os atributos do evento estarão disponíveis como variáveis de ambiente. Clique em Avançar para continuar.
    3. Para Detalhes de evento de depósito, selecione ou digite o nome de um depósito do Object Storage existente. Especifique os tipos de mudanças para o seu objeto e, opcionalmente, forneça um prefixo ou sufixo de nome de objeto para filtrar objetos no depósito para acionar eventos para a assinatura. Clique em Avançar para continuar.
    4. Para Consumidor de eventos, especifique o aplicativo para receber eventos. Observe que você pode escolher a partir de uma lista de aplicativos e tarefas definidos. Para este exemplo, use o aplicativo myapp que referencia a imagem icr.io/codeengine/cos-listen. Se o seu app não existir, você poderá fornecer o nome do seu aplicativo e criar seu aplicativo depois de criar a assinatura do Object Storage. Apenas para aplicativos, é possível especificar opcionalmente um caminho. Por padrão, os eventos são encaminhados para a URL raiz do aplicativo de destino. É possível enviar eventos para um destino diferente dentro do app especificando um caminho. Por exemplo, se o seu caminho de assinatura especificar /events, os eventos serão enviados para https://<base application URL>/events. Clique em Avançar para continuar.
    5. Para Resumo, revise as configurações para a sua assinatura de evento do Object Storage e faça mudanças se necessário. Quando pronto, clique em Criar para criar a assinatura do Object Storage.
  5. Agora que a sua assinatura do Object Storage foi criada, acesse a página Assinaturas de evento para visualizar uma listagem de assinaturas definidas.

  6. Para atualizar uma assinatura, navegue para a dua página de assinatura do Object Storage. Na página Assinaturas de eventos, clique no nome da assinatura que deseja atualizar.

  7. Na página de assinatura do seu Object Storage, vamos mudar o tipo de mudança de objeto para apenas mudanças de objeto delete. Na guia Detalhes de evento de depósito, selecione apenas o tipo delete de mudança de objeto. Clique em Salvar para salvar suas mudanças.

  8. Como o aplicativo myapp faz referência ao aplicativo cos-listen de amostra, que imprime informações nos arquivos de log, é possível visualizar os logs. Depois que um objeto é excluído do depósito, é possível ver um evento para exclusão nos logs do app. Consulte Visualizando logs do aplicativo a partir do console.

Depois de definir uma assinatura de evento do IBM Cloud Object Storage que referencia um depósito específico, não é possível atualizar esta assinatura para usar um depósito diferente. Deve-se criar uma nova assinatura para referencia o depósito que você deseja.

Assinando eventos do IBM Cloud Object Storage para um aplicativo com a CLI

Antes de Iniciar

  1. Conecte seu aplicativo ao produtor de eventos do IBM Cloud Object Storage usando o comando ibmcloud ce subscription cos create. Por exemplo,

    ibmcloud ce subscription cos create --name mycosevent --destination-type app --destination myapp --bucket mybucket
    
  2. Após a criação de sua assinatura, execute o comando subscription cos get para obter detalhes sobre sua assinatura.

    ibmcloud ce subscription cos get --name mycosevent
    

    Saída de exemplo

    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
    

Agora toda vez que você mudar o depósito, seu app receberá notificação.

Deseja experimentar um tutorial? Consulte Assinando eventos do Object Storage. Procurando mais exemplos de código? Confira o repositório Samples for IBM Cloud Code Engine GitHub.

Visualizando informações de eventos para um aplicativo a partir do console

Para visualizar informações sobre suas assinaturas de eventos,

  1. Na página “Projetos” do Code Engine, acesse o seu projeto.
  2. A partir da página Visão Geral, clique em Assinaturas de eventos para visualizar uma listagem de assinaturas definidas.

Se o seu aplicativo imprimir informações em arquivos de log, como o aplicativo cos-listen de amostra faz, visualize os arquivos de log para o seu aplicativo de consumidor de eventos. Consulte Visualizando logs do aplicativo a partir do console.

Visualizando informações de evento para um aplicativo com a CLI

Se seu aplicativo imprimir informações em arquivos de log, como o aplicativo cos-listen faz, use o comando da CLI ibmcloud ce app logs para visualizar as informações que foram enviadas.

Antes de ser possível visualizar as informações de evento para o seu aplicativo, deve-se primeiro criar um evento do Object Storage. Faça uma mudança em seu depósito.

Para visualizar os logs para o aplicativo que você criou no exemplo anterior.

ibmcloud ce application logs --application myapp

Saída de exemplo

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

Observe que as informações de log dos aplicativos ficam armazenadas por apenas uma hora. Para obter mais informações sobre a criação de log, consulte Visualizando logs.

Procurando mais exemplos de código? Confira o repositório Samples for IBM Cloud Code Engine GitHub.

Informações de cabeçalho e corpo do IBM Cloud Object Storage para eventos entregues a aplicativos

Todos os eventos que são entregues aos aplicativos são recebidos como mensagens de HTTP. Os eventos contêm certos cabeçalhos de HTTP que o ajudam a determinar rapidamente os bits de chave de informações sobre os eventos sem olhar para o corpo (lógica de negócios) do evento. Para obter mais informações, consulte a especificação do CloudEvents.

Cabeçalhos

A tabela a seguir descreve os cabeçalhos para eventos do Object Storage.

Arquivos de cabeçalho para eventos
Cabeçalho Descrição
ce-id Um identificador exclusivo para o evento, a menos que um evento seja reproduzido. Nesse caso, ele é designado com o mesmo ID.
ce-source Uma referência de URI que indica de que local esse evento teve origem dentro do produtor de evento. Para eventos do Object Storage, este valor é https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME] em que [BUCKET_NAME] é o nome do depósito que contém o objeto.
ce-specversion A versão da especificação CloudEvents. Esse valor é sempre 1.0.
ce-subject Indica o recurso sobre o qual o evento está relacionado. Para eventos do Object Storage, este é o nome do objeto (ou chave) sobre o qual atuou.
ce-time O horário no qual o evento foi gerado.
ce-type O tipo do evento. Para eventos do Object Storage , este é com.ibm.cloud.cos.document.[ACTION] em que [ACTION] é write ou delete. Quando uma criação ou atualização para um evento ocorre, uma ação write é usada para ce-type.

Exemplo

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

Corpo HTTP

O corpo HTTP para um evento do IBM Cloud Object Storage está no formato a seguir,

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

A tabela a seguir descreve o campo de corpo.

Campos do corpo para IBM Cloud Object Storage
Campo do corpo Descrição
bucket O nome do depósito para o objeto que está relacionado ao evento.
endpoint Esse valor é sempre uma sequência de caracteres vazia.
key O nome do objeto no depósito.
operation O tipo de evento ou a operação, o tipo Object:Write ou Object:Delete. Os eventos de criação ou de upload são identificados como operações Object:Write.
Notification.bucket_name O nome do depósito para o objeto que está relacionado ao evento.
Notification.content_type O tipo MIME do objeto, por exemplo, text/html.
Notification.event_type O tipo de evento ou a operação, o tipo Object:Write ou Object:Delete. Os eventos de criação ou de upload são identificados como operações Object:Write.
Notification.format Esse valor é sempre 2.0.
Notification.object_etag Um valor exclusivo que muda cada vez que o objeto é modificado. Esse valor não é exibido para uma operação Object:Delete.
Notification.object_length O tamanho do objeto, em bytes.
Notification.request_id O ID exclusivo que está relacionado com a mudança de objeto.
Notification.request_time O horário no qual a mudança de objeto ocorreu.

Assinando eventos do IBM Cloud Object Storage para uma tarefa

É possível trabalhar com assinaturas do IBM Cloud Object Storage por meio do console ou com a CLI para que os eventos sejam enviados para uma tarefa do Code Engine.

Ao criar uma assinatura de evento para uma tarefa, uma execução de tarefa é criada para cada evento que é acionado, e essa execução de tarefa tem as variáveis de ambiente relacionadas à tarefa. Para obter mais informações sobre as variáveis de ambiente que são enviadas pelo IBM Cloud Object Storage, consulte Variáveis de ambiente para eventos.

Assinando eventos do IBM Cloud Object Storage para uma tarefa por meio do console

É possível criar e atualizar assinaturas de eventos do IBM Cloud Object Storage para uma tarefa por meio do console.

Antes de Iniciar

Siga as etapas a seguir para criar ou atualizar uma assinatura de eventos do IBM Cloud Object Storage para uma tarefa a partir do console:

  1. Na página “Projetos” do Code Engine, acesse o seu projeto.

  2. A partir da página Visão Geral, clique em Assinaturas de eventos.

  3. A partir da página de Assinaturas de eventos, clique em Criar para criar sua assinatura.

  4. Na página “Criar uma assinatura de evento”, siga estas etapas:

    1. Para Tipo de evento, selecione o tile Cloud Object Storage. Clique em Avançar.

    2. Para Geral, forneça um nome para a assinatura do Object Storage, por exemplo, mycos-job. É possível, opcionalmente, fornecer atributos de eventos. Quando o consumidor de eventos é uma tarefa, os atributos do evento estão disponíveis como variáveis de ambiente. Clique em Avançar para continuar.

    3. Para detalhes de eventos do Bucket, selecione ou digite o nome de um bucket existente no site Object Storage e especifique os tipos de alterações do objeto em que você deseja acionar eventos.

      Para Tipo de alteração de objeto, especifique quando receber eventos para ações no objeto Object Storage ; você pode selecionar um ou ambos os tipos de alterações de objeto:

      • Use Create e update para receber um evento sempre que um novo objeto for criado ou um objeto existente for atualizado.
      • Use Delete para receber um evento sempre que um objeto existente for removido do seu bucket.

      Opcionalmente, você também pode fornecer um prefixo ou sufixo de nome de objeto para filtrar objetos no bucket para acionar eventos para a assinatura. Especifique valores de prefixo de nome de objeto ou sufixo de nome de objeto para indicar cadeias de caracteres que correspondam ao início (prefixo) ou ao fim (sufixo) dos nomes de objetos para os quais você deseja receber eventos. O valor limita os objetos em seu bucket Object Storage que acionam eventos aos nomes de arquivos que começam ou terminam com o prefixo ou sufixo especificado. Não use caracteres curinga ou expressões regulares; especifique apenas texto simples para o prefixo e o sufixo (por exemplo, especifique abc, e não *abc para indicar todos os objetos que começam com abc ). Além disso, os nomes de arquivos incluem a extensão do arquivo (por exemplo, se você especificar json como sufixo, o evento será tratado para arquivos como abc.json, mas não para abcjson.txt).

      Clique em Avançar para continuar.

    4. Para Consumidor de eventos, especifique a tarefa para receber eventos. Observe que é possível escolher em uma lista de tarefas definidas. Para este exemplo, use a tarefa myjob que referencia a imagem icr.io/codeengine/codeengine. Se sua tarefa não existir, será possível especificar o nome de sua tarefa e criar sua tarefa depois de criar a assinatura do Object Storage. Clique em Avançar para continuar.

    5. Para Resumo, revise as configurações para a sua assinatura de evento do Object Storage e faça mudanças se necessário. Quando pronto, clique em Criar para criar a assinatura do Object Storage.

  5. Agora que a sua assinatura do Object Storage foi criada, acesse a página Assinaturas de evento para visualizar uma listagem de assinaturas definidas.

  6. Para atualizar uma assinatura, navegue para a dua página de assinatura do Object Storage. Na página Assinaturas de eventos, clique no nome da assinatura que deseja atualizar.

  7. Na página de assinatura do seu Object Storage, vamos mudar o tipo de mudança de objeto para apenas mudanças de objeto delete. Na guia Detalhes de evento de depósito, selecione apenas o tipo delete de mudança de objeto. Clique em Salvar para salvar suas mudanças.

  8. Como a tarefa myjob faz referência à tarefa icr.io/codeengine/codeengine de amostra, que imprime informações nos arquivos de log, é possível visualizar os logs. Depois que um objeto é excluído do depósito, é possível ver um evento para a exclusão nos logs para a execução da tarefa. Consulte Visualizando logs de tarefas a partir do console.

As execuções de tarefas que são criadas por assinaturas são excluídas após 10 minutos.

Depois de definir uma assinatura de evento do IBM Cloud Object Storage que referencia um depósito específico, não é possível atualizar esta assinatura para usar um depósito diferente. Deve-se criar uma nova assinatura para referencia o depósito que você deseja.

Assinando eventos do IBM Cloud Object Storage para uma tarefa com a CLI

Antes de Iniciar

  1. Conecte sua tarefa ao produtor de eventos do IBM Cloud Object Storage usando o comando ibmcloud ce subscription cos create.

    ibmcloud ce subscription cos create --name mycosevent --destination-type job --destination myjob --bucket mybucket
    
  2. Após a criação de sua assinatura, execute o comando subscription cos get para obter detalhes sobre sua assinatura.

    ibmcloud ce subscription cos get --name mycosevent
    

    Saída de exemplo

    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
    

Agora toda vez que você mudar o seu depósito, a sua tarefa receberá notificação.

As execuções de tarefas que são criadas por assinaturas são excluídas após 10 minutos.

Deseja experimentar um tutorial? Consulte Assinando eventos do Object Storage. Procurando mais exemplos de código? Confira o repositório Samples for IBM Cloud Code Engine GitHub.

Visualizando informações do evento para uma tarefa a partir do console

Para visualizar informações sobre suas assinaturas de eventos,

  1. Na página “Projetos” do Code Engine, acesse o seu projeto.
  2. A partir da página Visão Geral, clique em Assinaturas de eventos para visualizar uma listagem de assinaturas definidas.

Se a sua tarefa imprimir informações em arquivos de log, como a tarefa codeengine de amostra faz, visualize os arquivos de log para o seu aplicativo de consumidor de eventos. Consulte Visualizando logs de tarefas a partir do console.

Visualizando informações de evento para uma tarefa com a CLI

Se o sua tarefa imprimir informações em arquivos de log, como a tarefa codeengine faz, use o comando da CLI ibmcloud ce jobrun logs para visualizar as informações enviadas.

Antes de ser possível visualizar as informações de evento para a sua tarefa, deve-se primeiro criar um evento do Object Storage. Faça uma mudança em seu depósito.

Para localizar a execução da tarefa para a tarefa no exemplo anterior.

ibmcloud ce jobrun list

Saída de exemplo

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

Visualize os logs para a execução da tarefa especificando o nome de execução da tarefa.

ibmcloud ce jobrun logs --jobrun myjob-pnz6m

Saída de exemplo

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

Observe que as informações de log relativas à execução de tarefas permanecem armazenadas por apenas uma hora. Para obter mais informações sobre a criação de log, consulte Visualizando logs.

Procurando mais exemplos de código? Confira o repositório Samples for IBM Cloud Code Engine GitHub.

Variáveis de ambiente para eventos entregues a tarefas

Todos os eventos que são entregues a uma tarefa são recebidos como variáveis de ambiente. Essas variáveis de ambiente incluem o prefixo CE_ e seguem a especificação CloudEvents.

Cada evento contém algumas variáveis de ambiente comuns que aparecem sempre que o evento é entregue a uma tarefa. O conjunto real de variáveis em cada evento pode incluir mais opções. Para obter mais informações e conhecer outras opções de variáveis de ambiente, consulte os atributos do CloudEvent .

A tabela a seguir descreve as variáveis de ambiente que são específicas para eventos do IBM Cloud Object Storage.

Variáveis de ambiente para eventos
Variável Descrição
CE_DATA Os dados (corpo) do evento. Consulte CE_DATA para Object Storage eventos.
CE_ID Um identificador exclusivo para o evento, a menos que um evento seja reproduzido. Nesse caso, ele é designado com o mesmo ID.
CE_SOURCE Uma referência de URI que indica de que local esse evento teve origem dentro do produtor de evento. Para eventos do Object Storage, este valor é https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME] em que [BUCKET_NAME] é o nome do depósito que contém o objeto.
CE_SPECVERSION A versão da especificação CloudEvents. Esse valor é sempre 1.0.
CE_TIME O horário no qual o evento foi gerado.
CE_TYPE O tipo do evento. Para eventos do Object Storage , este é com.ibm.cloud.cos.document.[ACTION] em que [ACTION] é write ou delete.

CE_DATAVariável de ambiente

Observe que o exemplo a seguir para CE_DATA é formatado para capacidade de leitura.

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

A tabela a seguir descreve o atributo de ambiente CE_DATA.

Variáveis de ambiente para IBM Cloud Object Storage
Atributo Descrição
bucket O nome do depósito para o objeto que está relacionado ao evento.
endpont Esse valor é sempre uma sequência de caracteres vazia.
key O nome do objeto no depósito.
operaton O tipo de evento ou a operação, o tipo Object:Write ou Object:Delete. Os eventos de criação ou de upload são identificados como operações Object:Write.
Notification.bucket_name O nome do depósito para o objeto que está relacionado ao evento.
Notification.content_type O tipo MIME do objeto, por exemplo, text/rtf.
Notification.event_type O tipo de evento ou a operação, o tipo Object:Write ou Object:Delete. Os eventos de criação ou de upload são identificados como operações Object:Write.
Notification.format Esse valor é sempre 2.0.
Notification.object_etag Um valor exclusivo que muda cada vez que o objeto é modificado. Esse valor não é exibido para uma operação Object:Delete.
Notification.object_length O tamanho do objeto, em bytes.
Notification.request_id O ID exclusivo que está relacionado com a mudança de objeto.
Notification.request_time O horário no qual a mudança de objeto ocorreu.

Saída de exemplo

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

Definindo atributos de eventos adicionais

Ao criar uma assinatura, será possível definir atributos CloudEvent adicionais para serem incluídos em quaisquer eventos gerados. Esses atributos parecem semelhantes a qualquer outro atributo CloudEvent na entrega de evento. Se você optar por especificar o nome de um atributo CloudEvent existente, ele substituirá o valor original que foi incluído no evento.

Para definir atributos de adição, use as opções --extension com o comando da CLI ibmcloud ce subscription cos create.

Para obter mais informações, consulte É possível usar outras especificações CloudEvents?

Excluindo uma assinatura

Quando você não precisar mais de uma assinatura do IBM Cloud Object Storage, poderá excluí-la.

Excluindo uma assinatura a partir do console

  1. Na página “Projetos” do Code Engine, acesse o seu projeto.
  2. A partir da página Visão Geral, clique em Assinaturas de eventos para visualizar uma listagem de assinaturas definidas.
  3. Na lista de assinaturas, exclua a assinatura que deseja remover de seu aplicativo ou tarefa.

Se você excluir um app ou uma tarefa que esteja associado à assinatura, a assinatura não será excluída. Se você recriar o aplicativo ou tarefa (ou outro app ou tarefa com o mesmo nome), sua assinatura se reconectará ao app ou tarefa.

Excluindo uma assinatura com a CLI

É possível excluir uma assinatura do IBM Cloud Object Storage executando o comando ibmcloud ce subscription cos delete.

Por exemplo, use o comando a seguir para excluir uma assinatura do IBM Cloud Object Storage que é chamada mycosevent,

ibmcloud ce subscription cos delete --name mycosevent

Se você excluir um app ou uma tarefa que esteja associado à assinatura, a assinatura não será excluída. Em vez disso, ele se move para o estado pronto de false porque a assinatura depende da disponibilidade do app ou da tarefa. Se você recriar o aplicativo ou tarefa (ou outro app ou tarefa com o mesmo nome), sua assinatura se reconectará e o estado Pronto será true.