Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Computação
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gerenciamento e governança
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migração
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análises
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Outros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Segurança e conformidade
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Blockchain
Blockchain Service
Serviços de mídia
Media Processing Center
Video On Demand
Live
SparkRTC
Armazenamento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Cloud Server Backup Service
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bancos de dados
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicações de negócios
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribuição de conteúdo e computação de borda
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluções
SAP Cloud
High Performance Computing
Serviços para desenvolvedore
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
MacroVerse aPaaS
KooPhone
KooDrive

Notificação de evento

Atualizado em 2023-05-06 GMT+08:00

Notificação de evento de SMN habilitado

Simple Message Notification (SMN) é um serviço de notificação de mensagens confiável e extensível que pode lidar com um grande número de mensagens. SMN simplifica significativamente o acoplamento do sistema. Ele pode enviar mensagens automaticamente para os assinantes através de e-mails e mensagens de texto.

OBS usa SMN para fornecer a função de notificação de eventos. Você pode usar SMN para enviar notificações de eventos aos assinantes especificados para informá-los em tempo real de operações críticas (como carregamento e exclusão) que ocorrem em buckets especificados. Por exemplo, você pode configurar uma regra de notificação de eventos para enviar mensagens por meio de SMN para o endereço de e-mail especificado sempre que ocorrer uma operação de carregamento no bucket especificado.

Você pode configurar uma regra de notificação de eventos para filtrar objetos pelo prefixo ou sufixo do nome do objeto. Por exemplo, você pode adicionar uma regra de notificação de eventos para enviar notificações sempre que um objeto com o sufixo .jpg for carregado no bucket especificado. Você também pode adicionar uma regra de notificação de eventos para enviar notificações sempre que um objeto com o prefixo images/ for carregado no bucket especificado.

Figura 1 Notificação de evento de SMN habilitado

Tipos de eventos suportados por OBS

OBS pode publicar eventos dos seguintes tipos. Você precisa especificar esses tipos de evento nas configurações de notificação.

Tabela 1 Tipos de eventos suportados por OBS

Tipo de evento

Descrição

ObjectCreated:* (todas as operações de carregamento)

ObjectCreated:Put (carregamento de objeto)

ObjectCreated:Post (envio de objetos através de um navegador web)

ObjectCreated:Copy (cópia de objetos)

ObjectCreated:CompleteMultipartUpload (mescla de peças carregadas)

OBS pode usar as API como PUT, POST e COPY para criar objetos e configurar tipos de eventos correspondentes. Você receberá uma notificação quando um objeto for criado usando uma API específica. Além disso, você pode usar o tipo de evento ObjectCreated:* para solicitar todas as notificações de criação de objetos.

NOTA:

Você não receberá notificações de eventos de operações com falha.

ObjectRemoved:* (todas as operações de eliminação)

ObjectRemoved:Delete (excluindo objetos)

ObjectRemoved:DeleteMarkerCreated (Um objeto deletemarker é criado.)

Usando os tipos de evento ObjectRemoved, você pode ativar a notificação quando um objeto ou um lote de objetos são removidos de um bucket.

Você pode solicitar uma notificação quando um objeto é excluído ou um objeto versionado é excluído permanentemente usando o tipo de evento ObjectRemoved:Delete. Como alternativa, você pode solicitar uma notificação quando um marcador de exclusão for criado para um objeto versionado usando ObjectRemoved:Delete. Você também pode usar ObjectRemoved:* para solicitar uma notificação cada vez que um objeto é excluído.

NOTA:

Você não receberá notificações de eventos de exclusões automáticas de políticas de ciclo de vida ou de operações com falha.

Restrições

  • Uma configuração sem atributos de filtragem contidos corresponde a todos os prefixos e sufixos por padrão.
  • Quando há dois sufixos configurados, se uma dada cadeia de caracteres pode terminar com ambos os sufixos, esta configuração é inválida devido à sobreposição de sufixos (por exemplo, sufixos jpg e pg). Isso também funciona para prefixos.

Destinos suportados por OBS

OBS pode enviar mensagens de notificação de eventos para tópicos de SMN. Tem de conceder a OBS as permissões para enviar mensagens para estes destinos. Além disso, você precisa especificar os valores URN desses destinos na configuração de notificação.

Como ativar as notificações de eventos

A ativação de notificações é uma operação no nível do bucket. OBS armazena sua configuração de notificação de eventos em sub-recursos de bucket no formato XML. Por padrão, a notificação não está habilitada para nenhum tipo de evento. Ou seja, a configuração inicial de notificação de evento de cada bucket está vazia.

Para ativar notificações para eventos de tipos específicos, você deve adicionar a configuração XML correspondente que identifica os tipos de evento que você deseja que OBS publique e o destino onde você deseja que as notificações sejam publicadas.

  • Neste exemplo, você precisa publicar mensagens de evento em um tópico de SMN. Para definir um tópico SMN como o destino de notificação para tipos de evento específicos, adicione o TopicConfiguration.
<NotificationConfiguration>
  <TopicConfiguration>
    <Id>optional-id-string</Id>
    <Topic>topic-urn</Topic>
    <Event>event-type</Event>
    <Event>event-type</Event>
     ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>

Para remover todas as configurações de notificação de um bucket, defina o elemento <NotificationConfiguration> como nulo.

Uso de nomes de chave de objeto para filtrar notificações de evento

Você pode definir a notificação de eventos pelo prefixo e sufixo de um nome de chave de objeto. Por exemplo, você pode definir uma configuração para que uma notificação seja publicada somente quando objetos com uma extensão .jpg forem adicionados a um bucket.

OBS armazena a configuração de notificação como XML. Você pode usar o elemento Filter na estrutura XML para definir as regras para que as notificações sejam filtradas pelo prefixo e/ou sufixo de um nome de chave de objeto. As configurações de notificação que usam o filtro não podem definir regras de filtragem com prefixos sobrepostos, sufixos sobrepostos ou sobreposição de prefixos e sufixos. A seguir estão exemplos de configurações de notificação com filtragem de nome de chave de objeto:

  • Exemplo de configuração de notificação válida com filtragem de nome de chave de objeto

    As informações a seguir contêm uma configuração que identifica um tópico de SMN no qual OBS publica eventos do tipo ObjectCreated:Put. Os eventos serão publicados cada vez que um objeto que tem um prefixo de image e um sufixo jpg for PUT para um bucket.

    <NotificationConfiguration>
      <TopicConfiguration>
        <Id>01</Id>
        <Filter>
          <Object>
            <FilterRule>
              <Name>prefix</Name>
              <Value>image</Value>
            </FilterRule>
            <FilterRule>
              <Name>suffix</Name>
              <Value>jpg</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:notification</Topic>
        <Event>ObjectCreated:Put</Event>
      </TopicConfiguration>
    </NotificationConfiguration>

    A configuração de notificação a seguir tem vários prefixos não sobrepostos. A configuração define o seguinte: Quando os objetos que têm um prefixo de images são carregados em buckets, as notificações de eventos são publicadas no tópico-A; quando os objetos que têm um prefixo de videos são carregados em buckets, as notificações de eventos são publicadas no tópico-B.

    <NotificationConfiguration>
      <TopicConfiguration>
        <Id>01</Id>
        <Filter>
          <Object>
            <FilterRule>
              <Name>prefix</Name>
              <Value>images</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic>
        <Event>ObjectCreated:Put</Event>
      </TopicConfiguration>
      <TopicConfiguration>
        <Id>02</Id>
        <Filter>
          <Object>
            <FilterRule>
              <Name>prefix</Name>
              <Value>videos</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic>
        <Event>ObjectCreated:Put</Event>
      </TopicConfiguration>
    </NotificationConfiguration>

    A configuração de notificação a seguir tem vários sufixos não sobrepostos. A configuração define o seguinte: As notificações serão publicadas no tópico-A para todos os objetos .jpg PUT para buckets e as notificações serão publicadas no tópico-B para todos os objetos .png. Os sufixos .png e .jpg não são sobrepostos, apesar de terem a mesma última letra.

    <NotificationConfiguration>
      <TopicConfiguration>
        <Id>01</Id>
        <Filter>
          <Object>
            <FilterRule>
              <Name>suffix</Name>
              <Value>.jpg</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic>
        <Event>ObjectCreated:Put</Event>
      </TopicConfiguration>
      <TopicConfiguration>
        <Id>02</Id>
        <Filter>
          <Object>
            <FilterRule>
              <Name>suffix</Name>
              <Value>.png</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic>
        <Event>ObjectCreated:Put</Event>
      </TopicConfiguration>
    </NotificationConfiguration>
  • Exemplos de configuração de notificação com sobreposição de prefixo/sufixo inválido

    Na maioria dos casos, as configurações de notificação que usam o filtro não podem definir regras de filtragem com prefixos sobrepostos, sufixos sobrepostos ou combinações sobrepostas de prefixos e sufixos para os mesmos tipos de evento. (Você pode ter prefixos sobrepostos se os sufixos não se sobrepõem.) Você pode usar regras de filtragem de nomes de chave de objeto sobrepostos com diferentes tipos de evento. Por exemplo, você pode criar uma configuração de notificação que usa o prefixo de image para o tipo de evento ObjectCreated:Put e o prefixo de image para o tipo de evento ObjectDeleted:*.

    Uma configuração sem atributos de filtragem contidos corresponde a todos os prefixos e sufixos por padrão. A configuração de notificação a seguir é inválida porque contém prefixos sobrepostos. (A mesma coisa seria verdadeira se suffix em vez de prefix é usado neste exemplo.)

    <NotificationConfiguration>
      <TopicConfiguration>
        <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic>
        <Event>ObjectCreated:*</Event>
      </TopicConfiguration>
      <TopicConfiguration>
        <Filter>
          <Object>
            <FilterRule>
              <Name>prefix</Name>
              <Value>abc</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic>
        <Event>ObjectCreated:*</Event>
      </TopicConfiguration>
    </NotificationConfiguration>

    A seguinte configuração de notificação é inválida porque contém sufixos sobrepostos. Dois sufixos são considerados sobrepostos se uma dada cadeia pode terminar com ambos os sufixos. Uma cadeia pode terminar com jpg e pg. Portanto, os sufixos são sobrepostos. (O mesmo vale para os prefixos.)

    <NotificationConfiguration>
      <TopicConfiguration>
        <Filter>
          <Object>
            <FilterRule>
              <Name>suffix</Name>
              <Value>jpg</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic>
        <Event>ObjectCreated:*</Event>
      </TopicConfiguration>
      <TopicConfiguration>
        <Filter>
          <Object>
            <FilterRule>
              <Name>suffix</Name>
              <Value>pg</Value>
            </FilterRule>
          </Object>
        </Filter>
        <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic>
        <Event>ObjectCreated:Put</Event>
      </TopicConfiguration>
    </NotificationConfiguration>

Estrutura da mensagem de evento

Uma mensagem de notificação enviada por OBS para publicar um evento é uma mensagem JSON com a seguinte estrutura.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{  
    "Records":[
        {
            "eventVersion":"", //Version number. The current version is 3.0.
            "eventSource":"", //Message source. The value is fixed to OBS.
            "eventRegion":"", //Region where the event occurs
            "eventTime":"", //Time when an event occurs, in the ISO-8601 format, for example, 2020-07-10T09:24:11.418Z
            "eventName":"", //Name of the event that triggers the notification
            "userIdentity":{
                "ID":"" //Billing ID of the user who triggers the event
            },
            "requestParameters":{
                "sourceIPAddress":"" //Source IP address of the request
            },
            "responseElements":{
                "x-obs-request-id":"", //ID of the request
                "x-obs-id-2":"" ///Special characters for locating problems
            },
            "obs":{
                "Version":"1.0",
                "configurationId":"", //Name of the event notification rule in OBS that matches the event
                "bucket":{
                    "name":"examplebucket",
                    "ownerIdentity":{
                        "ID":"" //Account ID of the bucket owner
                    },
                    "bucket":"" //Bucket name
                },
               "object":{
                    "key":"", //Object name
                    "eTag":"", //ETag of the object
                    "size": , //Object size
                    "versionId":"nulo", //Version ID of the object
                    "sequencer":""  //Identifier that defines the event sequence of a specific object
                }
            }
        }
    ]
}

Observe o seguinte:

  • Você pode usar o valor-chave responseElements para rastrear solicitações de OBS. Ambos x-obs-request-id e x-obs-id-2 podem ser usados para rastrear uma única requisição. Seu valor é aquele retornado por OBS na resposta à solicitação.
  • O obs chave-valor contém informações sobre o bucket e o objeto envolvidos no evento. Observe que o nome da chave do objeto é codificado por URL. Por exemplo, TEST/Chinese.jpg é alterado para TEST%2F%E4%B8%AD+%E6%96%87%2F.jpg.

    Durante o desenvolvimento secundário, se você usar o SDK de OBS para baixar o objeto, precisará decodificar o nome do objeto codificado por URL e chamar a API para download. Se um navegador da web for usado para acessar o objeto, a decodificação não será necessária.

  • O sequencer chave-valor determina a seqüência de eventos. Geralmente, as notificações de eventos não chegam na ordem em que os eventos ocorreram. No entanto, as notificações de eventos para criação de objetos (PUT) e exclusão de objetos (DELETE) contêm um sequencer, que pode ser usado para determinar a ordem dos eventos de uma determinada chave de objeto. Se você comparar as cadeias de sequenciador hexadecimal de duas notificações de evento na mesma chave de objeto, a notificação de evento com o maior valor de sequenciador é o evento que ocorreu mais tarde.
    1. O sequenciador não pode ser usado para determinar a sequência de eventos em diferentes chaves de objeto.
    2. A seqüência de eventos indicada pelo sequencer é apenas para referência, o que não funciona para sistemas altamente confiáveis

Exemplo de mensagem:

  • Test message – When you configure an event notification on a bucket, OBS sends the following test message:
    {  
       "Service":"OBS",
       "Event":"TestEvent",
       "Time":"1970-01-01T00:00:00.000Z",
       "Bucket":"examplebucketname",
       "RequestId":"0002F4BCF6000001563B064B17B2094D",
       "HostId":"2Zf+b9AmbaBgNQ+YE8XU2j87DZaBNxu4TaMiOCTqpmkC2SA9ouf8TpB2SY5j3i4"
    }
  • Example message when an object is created using the PUT request – The following is an example of a message sent by OBS to publish an ObjectCreated:Put event:
    {  
        "Records":[
            {
                "eventVersion":"3.0",
                "eventSource":"OBS",
                "eventRegion":"cn-east-3",
                "eventRegion":"region",
                "eventTime":"2018-06-26T14:37:05.468Z",
                "eventName":"ObjectCreated:Put",
                "userIdentity":{
                    "ID":"71f3901173514e6988115ea2c26d1999"
                },
                "requestParameters":{
                    "sourceIPAddress":"104.55.173.69"
                },
                "responseElements":{
                    "x-obs-request-id":"9006000001643C86D03C300BE8860FA7",
                    "x-obs-id-2":"2+/Ucr6uinCJAbUejWyQ+rhxkuf/K/9uoaXuewIi/SE9j4tU5LwaXTTlD1gvMv2o"
                },
                "obs":{
                    "Version":"1.0",
                    "configurationId":"ConfigurationId",
                    "bucket":{
                        "name":"examplebucket",
                        "ownerIdentity":{
                            "ID":"b4bf1b36d9ca43d984fbcb9491b6fce9"
                        },
                        "bucket":"examplebucket"
                    },
                    "object":{
                        "key":"object0001.txt",
                        "eTag":"3b9680702b9a12733c5490d1b15c7607",
                        "size":538,
                        "versionId":"null",
                        "sequencer":"000000001643C86D06576F5320000000"
                    }
                }
            }
        ]
    }

    Devido a problemas de Internet ou restrições no envio de e-mail, as notificações podem não ser enviadas para terminais HTTP ou de e-mail.

Como usar essa função

Você pode configurar notificações de SMN usando console de OBS, as API, ou os SDK.

Ferramenta

Referência

SDK

OBS suporta kits de desenvolvimento de software (os SDK) em vários idiomas. Para obter detalhes, consulte o guia do desenvolvedor correspondente na página Visão geral de SDK.

API

Configuração da notificação de evento para um bucket

Usamos cookies para aprimorar nosso site e sua experiência. Ao continuar a navegar em nosso site, você aceita nossa política de cookies. Saiba mais

Feedback

Feedback

Feedback

0/500

Conteúdo selecionado

Envie o conteúdo selecionado com o feedback