Archive Direct Read lets you access objects in the Archive storage class without restoring them first. This is useful for workloads like data lakes and cloud photo albums, where archived data needs to be read occasionally without the latency and overhead of a full restore cycle.
Restoring and reading vs. direct reading
| Item | Archive Direct Read disabled (default) | Archive Direct Read enabled |
|---|---|---|
| Retrieval method | Restore, then read | Direct read |
| Retrieval fee | Low | High |
| Retrieval time | Minutes | Milliseconds |
For retrieval fee details, see OSS pricing.
①For more information about retrieval fees, see OSS Pricing.
When to use Archive Direct Read
Choose Archive Direct Read when your workload requires occasional, low-latency reads from archived objects and the higher retrieval fee is acceptable — for example, on-demand preview in a cloud photo album or ad-hoc queries against a data lake.
Stick with the default restore-and-read flow when:
You access the same archived objects repeatedly over a period of time (restoring once is more cost-effective)
Your workload is latency-tolerant and cost-sensitive
Prerequisites
Before you begin, make sure you have:
A bucket containing objects in the Archive storage class
The
oss:PutBucketArchiveDirectReadpermission to enable Archive Direct ReadThe
oss:GetBucketArchiveDirectReadpermission to query the Archive Direct Read status
For permission setup, see Grant custom permissions to a Resource Access Management (RAM) user.
Enable Archive Direct Read
OSS console
Log on to the OSS console.
In the left-side navigation pane, click Buckets. On the Buckets page, find and click the desired bucket.
In the left navigation pane, choose Data Management > Archive Direct Read.
On the Archive Direct Read page, enable Archive Direct Read.
In the message that appears, click OK.
ossutil
Before using ossutil, install ossutil.
Enable Archive Direct Read for a bucket:
ossutil api put-bucket-archive-direct-read --bucket examplebucket --archive-direct-read-configuration "{\"Enabled\":\"true\"}"Query whether Archive Direct Read is enabled for a bucket:
ossutil api get-bucket-archive-direct-read --bucket examplebucketFor command details, see put-bucket-archive-direct-read and get-bucket-archive-direct-read.
API
For high-customization requirements, call the REST API directly. You must write code to calculate signatures manually. See PutBucketArchiveDirectRead and GetBucketArchiveDirectRead.
Supported read operations
After enabling Archive Direct Read, you can run the following operations directly on unrestored objects in the Archive storage class:
| Operation | When to use |
|---|---|
| GetObject | Download or stream the object directly |
| CopyObject | Copy the object to another location without restoring it first |
| UploadPartCopy | Use the object as a source in a multipart copy operation |
| ProcessImage | Apply image processing (resize, crop, or format conversion) without restoring the source image |
| PostProcessTask | Submit an asynchronous data processing task on the archived object |
Query access records
Use Simple Log Service to query objects accessed via Archive Direct Read. The log field archive_direct_read_size identifies Archive Direct Read requests — it is set to - for requests that did not use this feature.
Scan mode (when the archive_direct_read_size field index is not enabled in Simple Log Service):
* and __topic__: oss_access_log and bucket: bucketname | set session mode=scan; select object where archive_direct_read_size not like '-'Index mode (when the archive_direct_read_size field index is enabled in Simple Log Service):
* and __topic__: oss_access_log and bucket: bucketname |select object where archive_direct_read_size not like '-'Query traffic
To see the total volume of data retrieved via Archive Direct Read:
Scan mode:
* and __topic__: oss_access_log and bucket: bucketname | set session mode=scan; select sum(cast(archive_direct_read_size as bigint)) as total_size where archive_direct_read_size != '-'Index mode:
* and __topic__: oss_access_log and bucket: bucketname | select sum(cast(archive_direct_read_size as bigint)) as total_size where archive_direct_read_size != '-'Billing
Archive Direct Read charges are based on the volume of data retrieved (RetrievalDataArchiveDirect). The archive_direct_read_size log field shows the retrieved volume for each request. For pricing details, see Data processing fees.
No charges apply when reading objects that have already been restored from the Archive storage class.
Early connection termination: The billable volume is determined by the byte range specified in the HTTP request header at connection time — not the amount of data actually transferred. If you request a 100 MB–200 MB range but the connection drops after 1 byte, you are still charged for the full 100 MB.
Image processing: Retrieved volume is calculated based on the source image size, not the output size. If a 1 GB source image is scaled down to 100 KB, the billable retrieved volume is 1 GB.
Limitations
Archive Direct Read applies only to the Archive storage class. Objects in the Cold Archive or Deep Cold Archive storage classes are not supported.
If Archive Direct Read is enabled and the default index page or error page for static website hosting is set to an unrestored archived object in the same bucket, access to that page fails with a 403 error. Set default index and error pages to objects in the Standard storage class.
Permissions
A RAM user needs the following permissions:
oss:PutBucketArchiveDirectRead— to enable Archive Direct Readoss:GetBucketArchiveDirectRead— to query the Archive Direct Read status
For setup instructions, see Grant custom permissions to a RAM user.