En créant une règle de notification d'événement, vous pouvez utiliser Simple Message Queue (SMQ) pour transmettre les messages d'événement provenant de vos ressources Object Storage Service (OSS) vers un endpoint spécifié. Cette rubrique présente les types d'événements, le format des messages et la procédure de création des règles de notification.
Contexte
Après la création d'une règle de notification d'événement, Simple Message Queue (SMQ) transmet les messages d'événement des ressources OSS spécifiées à un endpoint, comme illustré ci-dessous.
Lorsqu'une opération OSS déclenche une règle de notification d'événement correspondante, un en-tête est ajouté à la réponse. Cet en-tête décrit le résultat de la notification sans affecter la réponse API d'origine. Si aucune règle ne correspond, aucun en-tête n'est ajouté. Si une règle correspond, l'en-tête est ajouté indépendamment du succès ou de l'échec de l'envoi du message. Le format est le suivant :
x-oss-process-status: 'ewogICAgImNvZGUiOiAiU3VjY2VzcyIsCiAgICAibWVzc2FnZSI6ICJOb3RpZmljYXRpb25TdWNjZWVkIiwKICAgICJ0eXBlIjogIkV2ZW50Tm90aWZpY2F****'
Clé : x-oss-process-status
-
Valeur : Une chaîne encodée en Base64. L'exemple suivant montre l'objet JSON décodé :
{ "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" }
La rubrique Types de transmission décrit les méthodes de distribution de messages disponibles.
Cas d'utilisation
Surveillez l'activité des ressources. Créez des règles pour recevoir des notifications lorsque d'autres utilisateurs effectuent des opérations sur vos buckets.
Analysez les données et les tendances. Suivez la fréquence des opérations au fil du temps ou importez les messages de notification dans des services tels qu'E-MapReduce (EMR) pour une analyse approfondie.
Surveillez les métriques opérationnelles. Suivez des indicateurs tels que le nombre de requêtes par seconde (QPS) pour des opérations spécifiques sur vos ressources.
Types d'événements
|
Groupe |
Type |
Description |
|
ObjectCreated (Création d'objet) |
ObjectCreated:PutObject |
Charge un objet. PutObject. |
|
ObjectCreated:PostObject |
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 charger un objet. AppendObject. |
|
|
ObjectCreated:InitiateMultipartUpload |
Démarre un chargement multipartie. InitiateMultipartUpload. |
|
|
ObjectCreated:UploadPart |
Charge une partie lors d'un chargement multipartie. UploadPart. |
|
|
ObjectCreated:UploadPartCopy |
Copie une partie lors d'un chargement multipartie. UploadPartCopy. |
|
|
ObjectCreated:CompleteMultipartUpload |
Finalise un 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 préfixé par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectCreated. |
|
|
ObjectDownloaded (Téléchargement d'objet) |
ObjectDownloaded:GetObject |
Un objet est téléchargé. |
|
ObjectModified (Modification d'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 préfixé par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectModified. |
|
|
ObjectRemoved (Suppression d'objet) |
ObjectRemoved:DeleteObject |
Supprime un seul objet. DeleteObject. |
|
ObjectRemoved:DeleteObjects |
Supprime plusieurs objets. DeleteMultipleObjects. |
|
|
ObjectRemoved:AbortMultipartUpload |
Abandonne un chargement multipartie et supprime ses parties. AbortMultipartUpload. |
|
|
ObjectRemoved:* |
Tout événement préfixé par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectRemoved. |
|
|
ObjectReplication (Réplication d'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 préfixé par Remarque
Ce caractère générique couvre tous les types d'événements actuels et futurs sous ObjectReplication. |
|
|
ObjectRestore (Restauration d'objet) |
ObjectRestore:FinishRestore |
Un objet est restauré depuis le stockage d'archive. S'applique uniquement aux objets Cold Archive et Deep Cold Archive. |
Format des messages
Les messages de notification d'événements OSS sont des objets JSON encodés en Base64. L'exemple suivant montre une charge utile de message décodée.
{
"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"
}
}
]
}
La charge utile du message contient les paramètres suivants.
|
Paramètre |
Description |
|
eventName |
Le type d'événement. |
|
eventSource |
La source de l'événement. |
|
eventTime |
L'heure de l'événement, au format UTC. |
|
eventVersion |
La version du schéma d'événement. |
|
oss |
Contient les détails de l'événement OSS. |
|
bucket |
Contient les détails du bucket. |
|
arn |
Le nom de ressource Alibaba Cloud (ARN) du bucket. |
|
name |
Le nom du bucket. |
|
ownerIdentity |
L'ID de l'utilisateur propriétaire du bucket. |
|
object |
Contient les détails de l'objet. |
|
deltaSize |
La variation de la taille de l'objet, en octets. |
|
eTag |
L'eTag de l'objet. Pour les requêtes PutObject, il s'agit du hachage MD5. Pour les autres opérations, il s'agit d'un identifiant unique (et non d'un hachage MD5). Utilisez l'eTag pour vérifier l'intégrité du contenu de l'objet. |
|
key |
Le nom de l'objet. |
|
readFrom |
La position de l'octet de départ pour une opération de lecture. |
|
readTo |
La position de l'octet de fin pour une opération de lecture. |
|
size |
La taille totale de l'objet en octets. |
|
ossSchemaVersion |
La version du schéma spécifique à OSS. |
|
ruleId |
L'ID de la règle qui a déclenché l'événement. |
|
region |
La région où se trouve le bucket. |
|
requestParameters |
Les paramètres de la requête d'origine. |
|
sourceIPAddress |
L'adresse IP source de la requête. |
|
responseElements |
Les éléments de la réponse. |
|
requestId |
L'ID unique de la requête. |
|
userIdentity |
Les informations sur l'utilisateur ayant effectué la requête. |
|
principalId |
L'ID utilisateur (UID) du demandeur. |
|
xVars |
Les paramètres personnalisés issus d'une configuration de callback OSS. |
Remarques d'utilisation
Les règles de notification d'événements prennent environ 10 minutes pour entrer en vigueur après leur création.
Un topic est créé pour chaque nouvelle règle et peut engendrer des frais selon le guide de Facturation.
Vous pouvez créer et supprimer des règles de notification d'événements, mais pas les modifier.
(Facultatif) Étape 1 : Créer une file d'attente
Créez une file d'attente si vous envisagez de l'utiliser comme destination de notification. Vous pouvez également ajouter des abonnements après avoir créé la règle d'événement.
Connectez-vous à la console Simple Message Queue (anciennement MNS).
Dans le volet de navigation de gauche, sélectionnez .
Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Queues, cliquez sur Create Queue.
-
Dans le panneau Create Queue, configurez les paramètres suivants et cliquez sur OK :
Name : le nom de la file d'attente.
Maximum Message Length : la longueur maximale du message envoyé à la file d'attente.
Long Polling Period : la durée maximale pendant laquelle les requêtes de sondage long sont maintenues après l'appel de l'opération ReceiveMessage.
Visibility Timeout Period : la durée pendant laquelle un message reste à l'état Inactif après sa réception depuis la file d'attente.
Message Retention Period : la durée maximale pendant laquelle un message existe dans la file d'attente. Passé ce délai de conservation, le message est supprimé, qu'il ait été reçu ou non.
Message Delay Period : le délai après lequel tous les messages envoyés à la file d'attente sont consommés.
Enable Logging Feature : indique si la fonctionnalité de journalisation est activée.
Une fois la file d'attente créée, elle s'affiche sur la page Queues.
(Facultatif) Étape 2 : Créer un bucket
Si le bucket souhaité existe déjà, vous pouvez ignorer cette étape.
Connectez-vous à la console OSS.
Dans le volet de navigation de gauche, cliquez sur Buckets.
Sur la page Buckets, cliquez sur Create bucket.
-
Dans le panneau Create bucket, configurez les paramètres du bucket, puis cliquez sur OK.
Bucket name : Saisissez event-notification-test.
Region : Sélectionnez la même région que votre file d'attente.
Block public access : Sélectionnez Off.
-
ACL : Sélectionnez Public Read/Write.
RemarqueConservez les valeurs par défaut pour les autres paramètres.
Étape 3 : Créer une règle personnalisée
Lorsque vous créez une règle, Simple Message Queue (SMQ) crée automatiquement un topic et un abonnement pour l'endpoint spécifié. Vous pouvez les gérer dans la console SMQ.
Connectez-vous à la console Simple Message Queue (anciennement MNS).
Dans le volet de navigation de gauche, cliquez sur Event Notifications.
Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Event Notifications, cliquez sur l'onglet OSS, puis sur Create Rule.
-
Dans le panneau Create rule - OSS, configurez les paramètres suivants, puis cliquez sur OK.
Instance Name : Saisissez un nom pour la règle.
Event Type : Sélectionnez un ou plusieurs types d'événements.
-
Match rule : Configurez la règle de correspondance.
RemarqueUne règle de correspondance peut être un nom complet, un préfixe, un suffixe ou une combinaison d'un préfixe et d'un suffixe. Les définitions de ressources de différentes règles ne doivent pas se chevaucher. Une ressource OSS est spécifiée au format
bucket/object. Par exemple, dans la ressourcemovie/hello.avi,movieest le bucket ethello.aviest l'objet.Nom complet : movie/hello.avi.
-
Préfixe :
movie/hello : Correspond à tous les objets du bucket
movieayant le préfixehello.movie/ : Correspond à tous les objets du bucket
movie.mov : Correspond à tous les objets de n'importe quel bucket dont le nom a le préfixe
mov.
Suffixe : .avi : Correspond à tous les objets de n'importe quel bucket ayant le suffixe
.avi.Préfixe et suffixe : Préfixe movie/ et suffixe .avi : Correspond à tous les objets du bucket
movieayant le suffixe.avi.
Destination : Sélectionnez Queue et saisissez le nom de la file d'attente que vous avez créée à l'étape 1.
Étape 4 : Charger un objet
Connectez-vous à la console OSS.
Dans le volet de navigation de gauche, cliquez sur Buckets.
Sur la page Buckets, cliquez sur le nom du bucket cible.
Sélectionnez Object management > Object list, puis cliquez sur Upload object.
-
Dans le panneau Upload object, spécifiez le répertoire de chargement et l'ACL de l'objet, puis cliquez sur Upload object. Charger des objets à l'aide de la console OSS.
La colonne Status affiche « Uploaded ».
Étape 5 : Recevoir des messages
Connectez-vous à la console Simple Message Queue (anciennement MNS).
Dans le volet de navigation de gauche, sélectionnez .
Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Queues, localisez la file d'attente cible et, dans la colonne Action, choisissez More > Send and receive messages.
-
Sur la page Send and receive messages, dans la section Receive messages, cliquez sur Receive message.
La liste des messages de la file d'attente s'affiche dans la section Receive messages.
Dans la liste des messages, localisez le message cible, puis cliquez sur Details dans la colonne Actions pour afficher son contenu dans la boîte de dialogue Message details.