Ao criar uma regra de notificação de eventos, você utiliza o Simple Message Queue (SMQ) para enviar mensagens de eventos dos seus recursos do Object Storage Service (OSS) para um endpoint especificado. Este tópico aborda os tipos de eventos, o formato das mensagens e as etapas para criar regras de notificação.
Contexto
Após a criação de uma regra de notificação de eventos, o Simple Message Queue (SMQ) envia mensagens de eventos de recursos específicos do OSS para um endpoint, conforme ilustrado abaixo.
Quando uma operação no OSS aciona uma regra de notificação de eventos correspondente, o sistema adiciona um cabeçalho à resposta. Esse cabeçalho descreve o resultado da notificação sem alterar a resposta original da API. Caso nenhuma regra corresponda, o sistema não inclui nenhum cabeçalho. Se houver correspondência, ele adiciona o cabeçalho independentemente do sucesso no envio da mensagem. O formato é:
x-oss-process-status: 'ewogICAgImNvZGUiOiAiU3VjY2VzcyIsCiAgICAibWVzc2FnZSI6ICJOb3RpZmljYXRpb25TdWNjZWVkIiwKICAgICJ0eXBlIjogIkV2ZW50Tm90aWZpY2F****'
Chave: x-oss-process-status
-
Valor: Uma string codificada em Base64. O exemplo a seguir mostra o objeto JSON decodificado:
{ "code":"Success", // The result of the event notification attempt. Returns Success or Fail. Success indicates that OSS sent the message to the topic, but does not guarantee that the topic pushed the message to the endpoint. "message":"NotificationSucceed", // A detailed description of the operation. If it fails, this field provides the reason for the failure. "type":"EventNotification", // The operation type. For event notifications, this is always EventNotification. "version":"1.0" }
A seção Tipos de envio descreve os métodos disponíveis para entrega de mensagens.
Casos de uso
Monitorar atividade de recursos: crie regras para receber notificações quando outros usuários executarem operações em seus buckets.
Analisar dados e tendências: acompanhe a frequência operacional ao longo do tempo ou importe mensagens de notificação para serviços como o E-MapReduce (EMR) para análises mais aprofundadas.
Acompanhar métricas operacionais: monitore indicadores como consultas por segundo (QPS) para operações específicas em seus recursos.
Tipos de eventos
|
Grupo |
Tipo |
Descrição |
|
ObjectCreated (Criação de objeto) |
ObjectCreated:PutObject |
Faz upload de um objeto. PutObject. |
|
ObjectCreated:PostObject |
Faz upload de um objeto via POST baseado em formulário. PostObject. |
|
|
ObjectCreated:CopyObject |
Copia um objeto. CopyObject. |
|
|
ObjectCreated:AppendObject |
Acrescenta dados para fazer upload de um objeto. AppendObject. |
|
|
ObjectCreated:InitiateMultipartUpload |
Inicia um upload multipart. InitiateMultipartUpload. |
|
|
ObjectCreated:UploadPart |
Faz upload de uma parte em um upload multipart. UploadPart. |
|
|
ObjectCreated:UploadPartCopy |
Copia uma parte em um upload multipart. UploadPartCopy. |
|
|
ObjectCreated:CompleteMultipartUpload |
Conclui um upload multipart. CompleteMultipartUpload. |
|
|
ObjectCreated:PutSymlink |
Cria um link simbólico para um objeto. PutSymlink. |
|
|
ObjectCreated:Mirror |
O objeto é criado por espelhamento. Nota
Por padrão, o espelhamento do OSS aciona ObjectCreated:PutObject. Para usar ObjectCreated:Mirror, abra um ticket. |
|
|
ObjectCreated:* |
Qualquer evento com o prefixo Nota
Este curinga abrange todos os tipos de eventos atuais e futuros sob ObjectCreated. |
|
|
ObjectDownloaded (Baixe de objeto) |
ObjectDownloaded:GetObject |
Um objeto é baixado. |
|
ObjectModified (Modifique de objeto) |
ObjectModified:UpdateObjectMeta |
Os metadados do objeto são modificados via UpdateObjectMeta. |
|
ObjectModified:ChangeStorageClass |
Uma regra de ciclo de vida altera a classe de armazenamento de um objeto. |
|
|
ObjectModified:* |
Qualquer evento com o prefixo Nota
Este curinga abrange todos os tipos de eventos atuais e futuros sob ObjectModified. |
|
|
ObjectRemoved (Exclua de objeto) |
ObjectRemoved:DeleteObject |
Exclui um único objeto. DeleteObject. |
|
ObjectRemoved:DeleteObjects |
Exclui vários objetos. DeleteMultipleObjects. |
|
|
ObjectRemoved:AbortMultipartUpload |
Cancela um upload multipart e exclui suas partes. AbortMultipartUpload. |
|
|
ObjectRemoved:* |
Qualquer evento com o prefixo Nota
Este curinga abrange todos os tipos de eventos atuais e futuros sob ObjectRemoved. |
|
|
ObjectReplication (Replicação de objeto) |
ObjectReplication:ObjectCreated |
Uma operação de escrita ocorre como parte de um processo de replicação de dados. |
|
ObjectReplication:ObjectRemoved |
Uma operação de exclusão ocorre como parte de um processo de replicação de dados. |
|
|
ObjectReplication:ObjectModified |
Uma operação de sobrescrita ocorre como parte de um processo de replicação de dados. |
|
|
ObjectReplication:* |
Qualquer evento com o prefixo Nota
Este curinga abrange todos os tipos de eventos atuais e futuros sob ObjectReplication. |
|
|
ObjectRestore (Restauração de objeto) |
ObjectRestore:FinishRestore |
Um objeto é restaurado do armazenamento de arquivos. Aplica-se apenas a objetos Cold Archive e Deep Cold Archive. |
Formato da mensagem
As mensagens de notificação de eventos do OSS são objetos JSON codificados em Base64. O exemplo a seguir mostra o payload da mensagem decodificado.
{
"events":[
{
"eventName":"ObjectDownloaded:GetObject",
"eventSource":"acs:oss",
"eventTime":"2016-07-01T11:17:30.000Z",
"eventVersion":"1.0",
"oss":{
"bucket":{
"arn":"acs:oss:cn-shenzhen:123456789098****:event-notification-test-shenzhen",
"name":"event-notification-test-shenzhen",
"ownerIdentity":"123456789098****"
},
"object":{
"deltaSize":0,
"eTag":"0CC175B9C0F1B6A831C399E26977****",
"key":"test",
"readFrom":0,
"readTo":1,
"size":1
},
"ossSchemaVersion":"1.0",
"ruleId":"GetObjectRule"
},
"region":"cn-shenzhen",
"requestParameters":{
"sourceIPAddress":"140.205.XX.XX"
},
"responseElements":{
"requestId":"5776514AF09A9E654242****"
},
"userIdentity":{
"principalId":"123456789098****"
},
"xVars":{
"x:callback-var1":"value1",
"x:callback-var2":"value2"
}
}
]
}
O payload da mensagem contém os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
eventName |
Tipo do evento. |
|
eventSource |
Origem do evento. |
|
eventTime |
Horário em que o evento ocorreu, em UTC. |
|
eventVersion |
Versão do esquema do evento. |
|
oss |
Detalhes sobre o evento do OSS. |
|
bucket |
Informações sobre o bucket. |
|
arn |
Alibaba Cloud Resource Name (ARN) do bucket. |
|
name |
Nome do bucket. |
|
ownerIdentity |
ID do usuário proprietário do bucket. |
|
object |
Detalhes sobre o objeto. |
|
deltaSize |
Variação no tamanho do objeto, em bytes. |
|
eTag |
ETag do objeto. Para requisições PutObject, corresponde ao hash MD5. Para outras operações, é um identificador exclusivo (não é um hash MD5). Utilize o ETag para verifique a integridade do conteúdo do objeto. |
|
key |
Nome do objeto. |
|
readFrom |
Posição inicial do byte para uma operação de leitura. |
|
readTo |
Posição final do byte para uma operação de leitura. |
|
size |
Tamanho total do objeto em bytes. |
|
ossSchemaVersion |
Versão do esquema específico do OSS. |
|
ruleId |
ID da regra que acionou o evento. |
|
region |
Região onde o bucket está localizado. |
|
requestParameters |
Parâmetros da requisição original. |
|
sourceIPAddress |
Endereço IP de origem da requisição. |
|
responseElements |
Elementos da resposta. |
|
requestId |
ID exclusivo da requisição. |
|
userIdentity |
Informações sobre o usuário que fez a requisição. |
|
principalId |
User ID (UID) do solicitante. |
|
xVars |
Parâmetros personalizados de uma configuração de callback do OSS. |
Observações de uso
As regras de notificação de eventos levam cerca de 10 minutos para entrar em vigor após a criação.
O sistema cria um tópico para cada nova regra, o que pode gerar cobranças conforme o guia de Faturamento.
É possível crie e exclua regras de notificação de eventos, mas não modifique-as.
(Opcional) Etapa 1: Crie uma fila
Crie uma fila se planeja usá-la como destino da notificação. Também é possível adicionar assinaturas após a criação da regra de evento.
Faça login no console do Simple Message Queue (antigo MNS).
No painel de navegação à esquerda, escolha .
Na barra de navegação superior, selecione uma região.
Na página Queues, clique em Create Queue.
-
No painel Create Queue, configure os parâmetros a seguir e clique em OK:
Name: nome da fila.
Maximum Message Length: comprimento máximo da mensagem enviada à fila.
Long Polling Period: duração máxima pela qual as requisições de long polling são mantidas após a chamada da operação ReceiveMessage.
Visibility Timeout Period: tempo durante o qual uma mensagem permanece no estado Inactive após ser recebida da fila.
Message Retention Period: duração máxima de existência de uma mensagem na fila. Após o período de retenção especificado, a mensagem é excluída, independentemente de ter sido recebida ou não.
Message Delay Period: período após o qual todas as mensagens enviadas à fila são consumidas.
Enable Logging Feature: define se o recurso de log deve ser ativado.
Após a criação, a fila aparece na página Queues.
(Opcional) Etapa 2: Crie um bucket
Se o bucket desejado já existir, ignore esta etapa.
Faça login no console do OSS.
No painel de navegação à esquerda, clique em Buckets.
Na página Buckets, clique em Create bucket.
-
No painel Create bucket, configure os parâmetros do bucket e clique em OK.
Bucket name: insira event-notification-test.
Region: selecione a mesma região da sua fila.
Block public access: selecione Off.
-
ACL: selecione Public Read/Write.
NotaMantenha os valores padrão para as demais configurações.
Etapa 3: Crie uma regra personalizada
Ao criar uma regra, o Simple Message Queue (SMQ) cria automaticamente um tópico e uma assinatura para o endpoint especificado. Gerencie esses itens no console do SMQ.
Faça login no console do Simple Message Queue (antigo MNS).
No painel de navegação à esquerda, clique em Event Notifications.
Na barra de navegação superior, selecione uma região.
Na página Event Notifications, clique na aba OSS e, em seguida, clique em Create Rule.
-
No painel Create rule - OSS, configure as opções a seguir e clique em OK.
Instance Name: insira um nome para a regra.
Event Type: selecione um ou mais tipos de eventos.
-
Match rule: configure a regra de correspondência.
NotaUma regra de correspondência pode ser um nome completo, um prefixo, um sufixo ou uma combinação de prefixo e sufixo. Regras diferentes não podem ter definições de recursos sobrepostas. Um recurso do OSS é especificado no formato
bucket/object. Por exemplo, no recursomovie/hello.avi,movieé o bucket ehello.avié o objeto.Nome completo: movie/hello.avi.
-
Prefixo:
movie/hello: corresponde a todos os objetos no bucket
movieque possuem o prefixohello.movie/: corresponde a todos os objetos no bucket
movie.mov: corresponde a todos os objetos em qualquer bucket cujo nome tenha o prefixo
mov.
Sufixo: .avi: corresponde a todos os objetos em qualquer bucket que tenham o sufixo
.avi.Prefixo e Sufixo: prefixo movie/ e sufixo .avi: corresponde a todos os objetos no bucket
movieque possuem o sufixo.avi.
Destination: selecione Queue e insira o nome da fila criada na Etapa 1.
Etapa 4: Fazer upload de um objeto
Faça login no console do OSS.
No painel de navegação à esquerda, clique em Buckets.
Na página Buckets, clique no nome do bucket de destino.
Escolha Object management > Object list e clique em Upload object.
-
No painel Upload object, especifique o diretório de upload e a ACL do objeto e clique em Upload object. Upload de objetos pelo console do OSS.
A coluna Status exibe "Uploaded".
Etapa 5: Receber mensagens
Faça login no console do Simple Message Queue (antigo MNS).
No painel de navegação à esquerda, escolha .
Na barra de navegação superior, selecione uma região.
Na página Queues, localize a fila de destino e, na coluna Action, escolha More > Send and receive messages.
-
Na página Send and receive messages, na seção Receive messages, clique em Receive message.
A lista de mensagens da fila é exibida na seção Receive messages.
Na lista de mensagens, localize a mensagem desejada e clique em Details na coluna Actions para visualize seu conteúdo na caixa de diálogo Message details.