All Products
Search
Document Center

Object Storage Service:Access Archive objects in real time without restoring them

Last Updated:Mar 20, 2026

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

ItemArchive Direct Read disabled (default)Archive Direct Read enabled
Retrieval methodRestore, then readDirect read
Retrieval feeLowHigh
Retrieval timeMinutesMilliseconds

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:PutBucketArchiveDirectRead permission to enable Archive Direct Read

  • The oss:GetBucketArchiveDirectRead permission 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

  1. Log on to the OSS console.

  2. In the left-side navigation pane, click Buckets. On the Buckets page, find and click the desired bucket.

  3. In the left navigation pane, choose Data Management > Archive Direct Read.

  4. On the Archive Direct Read page, enable Archive Direct Read.

  5. 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 examplebucket

For 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:

OperationWhen to use
GetObjectDownload or stream the object directly
CopyObjectCopy the object to another location without restoring it first
UploadPartCopyUse the object as a source in a multipart copy operation
ProcessImageApply image processing (resize, crop, or format conversion) without restoring the source image
PostProcessTaskSubmit 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 Read

  • oss:GetBucketArchiveDirectRead — to query the Archive Direct Read status

For setup instructions, see Grant custom permissions to a RAM user.