Configurez des règles de notification d'événements OSS pour traiter, synchroniser, surveiller, déclencher des workflows métier ou journaliser les modifications apportées aux objets en temps réel. Spécifiez les objets à surveiller et acheminez les notifications vers un endpoint HTTP ou une file d'attente SMQ.
Prérequis
Vous avez activé Simple Message Queue (SMQ). Activez SMQ sur la page produit SMQ.
Notes d'utilisation
Lorsqu'une opération OSS déclenche une règle de notification d'événement, OSS appelle SMQ pour envoyer une notification. Cet appel peut échouer. Vérifiez l'en-tête de réponse
x-oss-event-statusencodé en Base64 pour confirmer la livraison. Une valeur décodée égale à{"Result": "Ok"}indique que l'opération a réussi.Les notifications d'événements entraînent des frais SMQ. Consultez la section Facturation.
-
Les notifications d'événements sont disponibles dans certaines régions.
Vous pouvez configurer jusqu'à 10 règles de notification d'événements par région. Pour augmenter cette limite, contactez le support technique.
Les objets TS et M3U8 générés à partir de flux RTMP (Real-Time Messaging Protocol) ne déclenchent pas de règles de notification d'événements. Consultez les opérations liées à LiveChannel.
Fonctionnement
Lorsqu'une opération sur votre bucket déclenche une règle de notification d'événement, SMQ envoie une notification à l'endpoint HTTP ou à la file d'attente spécifiée.
Types d'événements
|
Groupe |
Type |
Description |
|
ObjectCreated (Créer un objet) |
ObjectCreated:PutObject |
Télécharge un objet. PutObject. |
|
ObjectCreated:PostObject |
Télécharge un objet via une requête POST basée sur un formulaire. PostObject. |
|
|
ObjectCreated:CopyObject |
Copie un objet. CopyObject. |
|
|
ObjectCreated:AppendObject |
Ajoute des données pour télécharger un objet. AppendObject. |
|
|
ObjectCreated:InitiateMultipartUpload |
Initie un téléchargement multipartie. InitiateMultipartUpload. |
|
|
ObjectCreated:UploadPart |
Télécharge une partie lors d'un téléchargement multipartie. UploadPart. |
|
|
ObjectCreated:UploadPartCopy |
Copie une partie lors d'un téléchargement multipartie. UploadPartCopy. |
|
|
ObjectCreated:CompleteMultipartUpload |
Finalise un téléchargement multipartie. CompleteMultipartUpload. |
|
|
ObjectCreated:PutSymlink |
Crée un lien symbolique pour un objet. PutSymlink. |
|
|
ObjectCreated:Mirror |
L'objet est créé par mise en miroir. Remarque
Par défaut, la mise en miroir OSS déclenche ObjectCreated:PutObject. Pour utiliser ObjectCreated:Mirror à la place, soumettez un ticket. |
|
|
ObjectCreated:* |
Tout événement dont le nom commence par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectCreated. |
|
|
ObjectDownloaded (Télécharger un objet) |
ObjectDownloaded:GetObject |
Un objet est téléchargé. |
|
ObjectModified (Modifier un objet) |
ObjectModified:UpdateObjectMeta |
Les métadonnées de l'objet sont modifiées via UpdateObjectMeta. |
|
ObjectModified:ChangeStorageClass |
La classe de stockage d'un objet est modifiée par une règle de cycle de vie. |
|
|
ObjectModified:* |
Tout événement dont le nom commence par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectModified. |
|
|
ObjectRemoved (Supprimer un objet) |
ObjectRemoved:DeleteObject |
Supprime un seul objet. DeleteObject. |
|
ObjectRemoved:DeleteObjects |
Supprime plusieurs objets. DeleteMultipleObjects. |
|
|
ObjectRemoved:AbortMultipartUpload |
Interrompt un téléchargement multipartie et supprime ses parties. AbortMultipartUpload. |
|
|
ObjectRemoved:* |
Tout événement dont le nom commence par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectRemoved. |
|
|
ObjectReplication (Répliquer un objet) |
ObjectReplication:ObjectCreated |
Une opération d'écriture se produit dans le cadre d'un processus de réplication des données. |
|
ObjectReplication:ObjectRemoved |
Une opération de suppression se produit dans le cadre d'un processus de réplication des données. |
|
|
ObjectReplication:ObjectModified |
Une opération d'écrasement se produit dans le cadre d'un processus de réplication des données. |
|
|
ObjectReplication:* |
Tout événement dont le nom commence par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectReplication. |
|
|
ObjectRestore (Restaurer un objet) |
ObjectRestore:FinishRestore |
Un objet est restauré depuis le stockage d'archivage. S'applique uniquement aux objets Cold Archive et Deep Cold Archive. |
Message de notification
Chaque notification d'événement contient une charge utile JSON encodée en Base64 avec la structure suivante :
{
"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"
}
}
}
]
}
Exemple de message de notification :
{"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"
}
}
}
]
}
Procédure
Connectez-vous à la console OSS.
Dans le volet de navigation de gauche, cliquez sur Buckets. Sur la page qui s'affiche, cliquez sur le nom du bucket cible.
Dans le volet de navigation de gauche, choisissez Data Processing > Event Notification.
Sur la page Event Notification.
-
Dans le panneau Create Rule.
La règle de notification d'événement prend effet en environ 10 minutes.
FAQ
Pourquoi une notification d'événement n'est-elle pas déclenchée lorsque je supprime un objet ?
Références
Tutoriel : Utiliser SMQ pour implémenter les notifications d'événements OSS
Si vous ne recevez pas de corps de message sur un HttpEndpoint, cela peut être dû à l'utilisation de la méthode POST. Pour une solution, consultez la rubrique Que faire si je ne reçois pas de corps de message lorsque j'utilise PHP pour écrire une interface HttpEndpoint dans Simple Message Queue (anciennement MNS) ?
OSS propose également une fonctionnalité de callback de téléchargement comme alternative pour les notifications de téléchargement.