Configure reglas de notificación de eventos de OSS para procesar, sincronizar, monitorear, activar flujos de trabajo empresariales o registrar cambios en los objetos en tiempo real. Especifique qué objetos monitorear y dirija las notificaciones a un endpoint HTTP o a una cola de SMQ.
Requisitos previos
Debe haber activado Simple Message Queue (SMQ). Active SMQ en la página del producto SMQ.
Notas de uso
Cuando una operación de OSS activa una regla de notificación de eventos, OSS llama a SMQ para enviar una notificación. Esta llamada puede fallar. Compruebe el encabezado de respuesta
x-oss-event-statuscodificado en Base64 para verificar la entrega. Un valor decodificado de{"Result": "Ok"}indica que la entrega fue exitosa.Las notificaciones de eventos generan cargos de SMQ. Facturación.
-
Las notificaciones de eventos están disponibles en regiones específicas.
Configure hasta 10 reglas de notificación de eventos por región. Para aumentar este límite, póngase en contacto con el soporte técnico.
Los objetos TS y M3U8 generados a partir de transmisiones de Real-Time Messaging Protocol (RTMP) no activan reglas de notificación de eventos. Operaciones relacionadas con LiveChannel.
Funcionamiento
Cuando una operación en su bucket activa una regla de notificación de eventos, SMQ envía una notificación al endpoint HTTP o a la cola especificada.
Tipos de eventos
|
Grupo |
Tipo |
Descripción |
|
ObjectCreated (Creación de objeto) |
ObjectCreated:PutObject |
Carga un objeto. PutObject. |
|
ObjectCreated:PostObject |
Carga un objeto mediante POST basado en formulario. PostObject. |
|
|
ObjectCreated:CopyObject |
Copia un objeto. CopyObject. |
|
|
ObjectCreated:AppendObject |
Anexa datos para cargar un objeto. AppendObject. |
|
|
ObjectCreated:InitiateMultipartUpload |
Inicia una carga multiparte. InitiateMultipartUpload. |
|
|
ObjectCreated:UploadPart |
Carga una parte en una carga multiparte. UploadPart. |
|
|
ObjectCreated:UploadPartCopy |
Copia una parte en una carga multiparte. UploadPartCopy. |
|
|
ObjectCreated:CompleteMultipartUpload |
Completa una carga multiparte. CompleteMultipartUpload. |
|
|
ObjectCreated:PutSymlink |
Crea un vínculo simbólico para un objeto. PutSymlink. |
|
|
ObjectCreated:Mirror |
El objeto se crea mediante duplicación. Nota
De forma predeterminada, la duplicación de OSS activa ObjectCreated:PutObject. Para usar ObjectCreated:Mirror en su lugar, envíe un ticket. |
|
|
ObjectCreated:* |
Cualquier evento con el prefijo Nota
Este comodín abarca todos los tipos de eventos actuales y futuros bajo ObjectCreated. |
|
|
ObjectDownloaded (Descarga de objeto) |
ObjectDownloaded:GetObject |
Se descarga un objeto. |
|
ObjectModified (Modificación de objeto) |
ObjectModified:UpdateObjectMeta |
Los metadatos del objeto se modifican mediante UpdateObjectMeta. |
|
ObjectModified:ChangeStorageClass |
Una regla de ciclo de vida cambia la clase de almacenamiento de un objeto. |
|
|
ObjectModified:* |
Cualquier evento con el prefijo Nota
Este comodín abarca todos los tipos de eventos actuales y futuros bajo ObjectModified. |
|
|
ObjectRemoved (Eliminación de objeto) |
ObjectRemoved:DeleteObject |
Elimina un solo objeto. DeleteObject. |
|
ObjectRemoved:DeleteObjects |
Elimina varios objetos. DeleteMultipleObjects. |
|
|
ObjectRemoved:AbortMultipartUpload |
Cancela una carga multiparte y elimina sus partes. AbortMultipartUpload. |
|
|
ObjectRemoved:* |
Cualquier evento con el prefijo Nota
Este comodín abarca todos los tipos de eventos actuales y futuros bajo ObjectRemoved. |
|
|
ObjectReplication (Replicación de objeto) |
ObjectReplication:ObjectCreated |
Se produce una operación de escritura como parte de un proceso de replicación de datos. |
|
ObjectReplication:ObjectRemoved |
Se produce una operación de eliminación como parte de un proceso de replicación de datos. |
|
|
ObjectReplication:ObjectModified |
Se produce una operación de sobrescritura como parte de un proceso de replicación de datos. |
|
|
ObjectReplication:* |
Cualquier evento con el prefijo Nota
Este comodín abarca todos los tipos de eventos actuales y futuros bajo ObjectReplication. |
|
|
ObjectRestore (Restauración de objeto) |
ObjectRestore:FinishRestore |
Se restaura un objeto desde el almacenamiento de archivo. Solo aplica a objetos Cold Archive y Deep Cold Archive. |
Mensaje de notificación
Cada notificación de evento contiene una carga útil JSON codificada en Base64 con la siguiente estructura:
{
"events": [
{
"eventName": "", // The event notification type.
"eventSource": "", // The source of the event notification. This value is fixed as "acs:oss".
"eventTime": "", // The time when the event occurred, in ISO 8601 format.
"eventVersion": "", // The version of the event notification. The current version is "1.0".
"oss": {
"bucket": {
"arn": "", // The Alibaba Cloud Resource Name (ARN) of the bucket, in the format of "acs:oss:region:uid:bucketname".
"name": "", // The name of the destination bucket.
"ownerIdentity": "" // The owner of the bucket.
},
"object": {
"deltaSize": "", // The change in the object size. For example, when a new object is created, this value is the object size. When an object is overwritten, this value is the difference in size between the new object and the old object, which can be negative.
"eTag": "", // The ETag of the object.
"key": "", // The object key.
"position": "", // The starting position for an append operation. This parameter applies only to the ObjectCreated:AppendObject event. The first AppendObject request for an object starts at byte 0.
"readFrom": "", // The starting position for a read operation. This parameter applies only to the ObjectDownloaded:GetObject event. For a non-range request, this value is 0. For a range request, this value is the starting byte of the request.
"readTo": "", // The ending position for a read operation. This parameter applies only to the ObjectDownloaded:GetObject event. For a non-range request, this value is the object size. For a range request, this value is the ending byte of the range request plus 1.
"size": "" // The size of the object.
},
"ossSchemaVersion": "", // The version of this schema. The current version is "1.0".
"ruleId": "GetObject", // The ID of the matching event notification rule.
"region": "", // The bucket's region.
"requestParameters": {
"sourceIPAddress": "" // The source IP address of the request.
},
"responseElements": {
"requestId": "" // The request ID.
},
"userIdentity": {
"principalId": "" // The UID of the user who made the request.
},
"xVars": { // Custom parameters in the OSS upload callback feature.
"x:callback-var1":"value1",
"x:callback-var2":"value2"
}
}
}
]
}
Ejemplo de mensaje de notificación:
{"events": [
{
"eventName": "ObjectDownloaded:GetObject",
"eventSource": "acs:oss",
"eventTime": "2016-07-01T11:17:30.000Z",
"eventVersion": "1.0",
"oss": {
"bucket": {
"arn": "acs:oss:cn-shenzhen:114895646818****:event-notification-test-shenzhen",
"name": "event-notification-test-shenzhen",
"ownerIdentity": "114895646818****"},
"object": {
"deltaSize": 0,
"eTag": "0CC175B9C0F1B6468E1199E269772661",
"key": "test",
"readFrom": 0,
"readTo": 1,
"size": 1
},
"ossSchemaVersion": "1.0",
"ruleId": "GetObjectRule",
"region": "cn-shenzhen",
"requestParameters": {
"sourceIPAddress": "198.51.100.1"
},
"responseElements": {
"requestId": "5FF16B65F05BC932307A3C3C"
},
"userIdentity": {
"principalId": "114895646818****"
},
"xVars": {
"x:callback-var1":"value1",
"x:callback-var2":"value2"
}
}
}
]
}
Procedimiento
Inicie sesión en la consola de OSS.
En el panel de navegación izquierdo, haga clic en Buckets. En la página que aparece, haga clic en el nombre del bucket de destino.
En el panel de navegación izquierdo, seleccione Data Processing > Event Notification.
En la página Event Notification, haga clic en Create Rule.
-
En el panel Create Rule, configure los siguientes parámetros:
Parámetro
Descripción
Rule Name
Especifique un nombre para la regla de notificación de eventos.
El nombre debe ser único por región y cuenta. Debe comenzar con una letra, puede contener letras mayúsculas, minúsculas, dígitos y guiones (-), y tener una longitud máxima de 85 caracteres.
Event Type
Seleccione uno o más tipos de eventos. Por ejemplo, seleccione CopyObject para recibir notificaciones cuando se crea o sobrescribe un objeto mediante una operación de copia.
Una sola regla puede incluir varios tipos de eventos. Al configurar varias reglas, tenga en cuenta lo siguiente:
-
Las reglas que coinciden con los mismos objetos no pueden compartir tipos de eventos. Por ejemplo, si la Regla A usa CopyObject para el prefijo
images, la Regla B para el mismo prefijoimagesno puede incluir CopyObject. -
Las reglas que coinciden con objetos diferentes pueden compartir tipos de eventos. Por ejemplo, la Regla A usa PutObject para el prefijo
imagesy el sufijo.png, mientras que la Regla B usa PutObject o DeleteObject para el prefijology el sufijo.jpg.
ImportanteEn un bucket con control de versiones habilitado, los eventos DeleteObject o DeleteObjects no se activan si omite el ID de versión, ya que la operación añade un marcador de eliminación en lugar de eliminar permanentemente el objeto. La versión actual pasa a ser una versión anterior y se añade un marcador de eliminación.
Object Matching
Especifique los objetos de destino para la notificación de eventos.
-
Coincidencia de objetos por Full Name
-
Para coincidir con un objeto llamado
exampleobject.txten el directorio raíz del bucket, introduzca exampleobject.txt. -
Para coincidir con un objeto llamado
myphoto.jpgen el directoriodestdirdel bucket, introduzca destdir/myphoto.jpg.
-
-
Coincidencia de objetos por Prefix/Suffix
-
Para coincidir con todos los objetos del bucket, deje vacíos tanto Prefix como Suffix.
-
Para coincidir con todos los objetos en el directorio
examplefolder, establezca Prefix en examplefolder/ y deje Suffix vacío. -
Para coincidir con todos los objetos con la extensión
.jpgen el bucket, deje Prefix vacío y establezca Suffix en .jpg. -
Para coincidir con todos los objetos con la extensión
.mp3en el directorio examplefolder, establezca Prefix en examplefolder/ y Suffix en .mp3.
-
Haga clic en Add Condition para crear hasta cinco reglas de coincidencia de objetos.
Subscription Endpoint
Especifique el endpoint que recibe los eventos. Los tipos de suscripción compatibles incluyen HTTP y Queue.
La consola de OSS no permite crear una suscripción entre cuentas directamente. Para crear una suscripción entre cuentas, complete los siguientes dos pasos:
-
Al crear la regla de notificación de eventos en la consola de OSS, seleccione One-to-Many Subscription, borre el contenido de la suscripción y luego envíe la regla. La regla de notificación de eventos quedará suscrita a un tema de SMQ.
-
Haga clic en View Subscription Details de la regla de notificación de eventos para ir a la consola de SMQ. Bajo el mismo tema en la consola de SMQ, cree una suscripción, seleccione Cross-Account Subscription y luego introduzca el ARN de la cola y el ARN del rol.
-
-
Haga clic en OK.
La regla de notificación de eventos entra en vigor en aproximadamente 10 minutos.
Preguntas frecuentes
¿Por qué no se activa una notificación de evento al eliminar un objeto?
Referencias
Tutorial: Uso de SMQ para implementar notificaciones de eventos de OSS
Si no recibe un cuerpo de mensaje en un HttpEndpoint, podría deberse a que utiliza el método POST. Para obtener una solución, consulte ¿Qué hago si no puedo recibir un cuerpo de mensaje al usar PHP para escribir una interfaz HttpEndpoint en Simple Message Queue (anteriormente MNS)?
OSS también proporciona la función callback de carga como alternativa para las notificaciones de carga.