You can configure event notification rules for objects that you want to monitor in the Object Storage Service (OSS) console. If the events that you specified in the rules occur on these objects, you can be immediately notified.

Prerequisites

Message Service (MNS) is activated. You can activate MNS on the MNS product page.

Usage notes

  • You are charged by MNS when you use the event notification feature. For more information about the pricing, see Pricing.
  • The event notification feature is not supported in the following regions: China (Heyuan), China (Guangzhou), China (Hohhot), China (Ulanqab), UAE (Dubai), and Malaysia (Kuala Lumpur).
  • You can configure up to 10 event notification rules in a region.
  • Notifications are not sent for TS and M3U8 objects that are generated by ingesting streams over Real-Time Messaging Protocol (RTMP). For more information about RTMP-based stream ingest, see Overview.

Description

If an operation performed on your OSS resources triggers an event notification rule that you configure, MNS sends a notification about the operation to the specified HTTP server or MNS queue. The following figure shows the event notification process in detail.

Events

Event Description
PutObject An object is created or overwritten by using simple upload.
PostObject An object is created or overwritten by using form upload.
CopyObject An object is created or overwritten by copying an object.
InitiateMultipartUpload A multipart upload task is initiated.
UploadPart An object is created or overwritten by uploading parts.
UploadPartCopy An object is created or overwritten by using multipart copy.
CompleteMultipartUpload A multipart upload task is completed.
AppendObject An object is created or appended by using append upload.
GetObject An object is obtained by using simple download.
DeleteObject A single object is deleted.
DeleteObjects Multiple objects are deleted.
ObjectReplication:ObjectCreated An object is created by using cross-region replication (CRR).
ObjectReplication:ObjectRemoved An object is deleted by using CRR.
ObjectReplication:ObjectModified An object is overwritten by using CRR.
ObjectCreatedGroup An object is created or overwritten.
ObjectDownloadedGroup An object is downloaded.
ObjectRemovedGroup An object is deleted.
Notice The ObjectCreatedGroup, ObjectDownloadedGroup, and ObjectRemovedGroup events are available only in the China (Hong Kong), US (Silicon Valley), US (Virginia), Germany (Frankfurt), Australia (Sydney), Singapore (Singapore), and UK (London) regions.

Notifications

The content of OSS-based event notifications is Base64-encoded. After the content is decoded, the content is in the JSON format. The following code provides an example on the decoded content:
{"events": [
      {
        "eventName": "",  // The event name. 
        "eventSource": "", // The resources that trigger an event notification. Valid value: acs:oss. 
        "eventTime": "", // The time when the event occurred. The returned data is a timestamp that complies with ISO 8601. 
        "eventVersion": "", // The version of an event notification. The current version is 1.0. 
        "oss": {
            "bucket": {
                "arn": "", // The Alibaba Cloud Resource Name (ARN) of the bucket, which is in the following format: acs:oss:region:uid:bucketname. 
                "name": "", // The name of the bucket for which the event notification rule is configured. 
                "ownerIdentity": "" // The owner of the bucket. 
            }, 
            "object": {
                "deltaSize": "", // The size difference between the new object and the original object. If you create an object, the value of this parameter indicates the size of the object. If you overwrite an object, the value indicates the difference between the sizes of the new object and the original object. Therefore, the value may be negative. 
                "eTag": "", // The ETag value of the object. 
                "key": "", // The name of the object. 
                "position": "", // This parameter applies only to the ObjectCreated:AppendObject event and indicates the position from which the AppendObject operation starts. The first AppendObject operation on an object starts from byte 0 of the object. 
                "readFrom": "", // This parameter applies only to the ObjectDownloaded:GetObject event and indicates the position from which the GetObject operation starts. If the GetObject operation is not performed by range, the value of this parameter is 0. Otherwise, the value refers to the position of the byte from which the GetObject operation starts. 
                "readTo": "", // This parameter applies only to the ObjectDownloaded:GetObject event and indicates the position at which the last GetObject operation ends. If the GetObject operation is not performed by range, the value of this parameter is the object size. Otherwise, the value refers to the position of the byte next to the end byte of the GetObject operation. 
                "size": "" // The size of the object. 
                }, 
        "ossSchemaVersion": "", // The version of the schema. The current value is 1.0. 
        "ruleId": "GetObject", // The ID of the rule that matches the event. 
        "region": "", // The region in which the bucket is located. 
        "requestParameters": {
            "sourceIPAddress": "" // The source IP address from which the request is sent. 
            }, 
        "responseElements": {
            "requestId": "" // The ID of the request. 
            }, 
        "userIdentity": {
            "principalId": "" // The UID of the requester. 
            }, 
        "xVars": {  // Custom parameters for OSS callback. 
            "x:callback-var1":"value1",
            "x:vallback-var2":"value2"
            }
        }        
     }
  ]
}
The following code provides an example on the content of a 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:vallback-var2":"value2"
            }
        }        
     }
  ]
}

Use the OSS console

  1. Log on to the OSS console.
  2. In the left-side navigation pane, click Buckets. On the Buckets page, click the name of the bucket for which you want to configure event notification rules.
  3. In the left-side navigation pane, choose Basic Settings > Event Notification.
  4. In the Event Notification section, click Configure. On the page that appears, click Create Rule.
  5. In the Create Rule panel, configure the rule parameters that are described in the following table.
    Parameter Description
    Rule Name Specify the name of the event notification rule.

    The name of each event notification rule that is created by using the same Alibaba Cloud account must be unique in the same region. The name of an event notification rule must start with a letter and can contain only letters, digits, and hyphens (-). The name cannot exceed 85 characters in length.

    Events Select one or more events that can trigger the event notification rule from the drop-down list. For example, if you want to receive a notification when a specific object is created or overwritten by copying an object, select CopyObject.

    You can configure an event notification rule for a specific object and specify multiple types of events that can trigger the rule. You can also configure multiple event notification rules for an object. When you configure multiple event notification rules, take note of the following items:

    • If the multiple event notification rules apply to the same object, the values of this parameter in these rules must be different. For example, if you select CopyObject for Events when you create an event notification rule for objects whose names contain the images prefix, CopyObject cannot be selected for Events when you create another event notification rule for objects whose names contain the same prefix.
    • If the multiple event notification rules apply to different objects, the values of this parameter in these rules can be the same. For example, if you select PutObject for Events when you create an event notification rule for objects whose names contain the images prefix and the .png suffix, you can select PutObject or DeleteObject for Events when you create another event notification rule for objects whose names contain the log prefix and the .jpg suffix.
    Notice If you do not specify the version ID when you delete an object from a versioned bucket, the DeleteObject or DeleteObjects event notification is not triggered. In this case, no version of the object is deleted. The current version of the object is converted into a previous version and a delete marker is added to the object.

    For more information about the object operations that correspond to the event types, see Events.

    Resource Description Specify the objects to which the event notification rule applies.
    • Select Full Name to apply the rule to an object whose name matches the specified name.
      • To create a rule that applies to an object named exampleobject.txt in the root directory of the bucket, enter exampleobject.txt.
      • To create a rule that applies to an object named myphoto.jpg in the destdir directory within the root directory of the bucket, enter destdir/myphoto.jpg.
    • Select Prefix and Suffix to apply the rule to objects whose names contain the specified prefix and suffix.
      • To create a rule that applies to all objects in the bucket, leave Prefix and Suffix empty.
      • To create a rule that applies to all objects in the examplefolder directory within the root directory of the bucket, set Prefix to examplefolder/ and leave Suffix empty.
      • To create a rule that applies to all JPG objects in the bucket, leave Prefix empty and set Suffix to .jpg.
      • To create a rule that applies to all MP3 objects in the examplefolder directory within the root directory of the bucket, set Prefix to examplefolder/ and Suffix to .mp3.

    To create a Resource Description entry, click Add. You can create up to five Resource Description entries.

    Endpoint Specify the endpoint to which notifications are sent. Valid values: HTTP and Queue.
    • HTTP: Enter the address of the HTTP endpoint to which notifications are sent. Example: http://198.51.100.1:8080. For more information about how to enable an HTTP endpoint, see Manage topics and HttpEndpoint.
    • Queue: Enter the name of an MNS queue. For more information about how to create a queue, see Create a queue.

    To create an endpoint, click Add. You can create up to five endpoints.

  6. Click OK.
    After you configure the event notification rule, the rule takes effect after approximately 10 minutes.

Troubleshooting

  • Issue description: A bucket has an event notification rule configured for DeleteObject and DeleteObjects events. However, no notifications are sent when delete operations are performed on objects in the bucket.
  • Cause: The bucket has versioning enabled. However, no object version IDs are specified in the delete operation. If you do not specify an object version ID when you perform a delete operation, the current version is converted to a previous version and a delete marker is added to the object. Therefore, the delete operation does not trigger the event notification rule configured for DeleteObject and DeleteObjects events.

References

You can configure event notification rules for objects that you want to monitor. If the events that you specified in the rules occur on these objects, you are immediately notified from the HTTP servers or MNS queues that you specified in the rules. For more information about the procedure, see Tutorial: Use MNS to send notifications for OSS events.