All Products
Search
Document Center

Object Storage Service:Real-time access to Archive objects (OSS SDK for Go V2)

Last Updated:Aug 02, 2025

This topic describes how to use the OSS SDK for Go V2 to enable or disable real-time access to Archive objects for buckets.

Notes

  • The sample code in this topic uses the region ID cn-hangzhou for the China (Hangzhou) region. By default, a public endpoint is used to access resources in a bucket. If you want to access resources in the bucket using other Alibaba Cloud services in the same region as the bucket, use an internal endpoint. For more information about the regions and endpoints supported by Object Storage Service (OSS), see OSS regions and endpoints.

  • In this topic, access credentials are retrieved from environment variables. For more information about how to configure access credentials, see Configure access credentials.

Sample code

Enable real-time access to Archive objects

You can use the following code to enable real-time access to Archive objects for a bucket.

package main

import (
	"context" 
	"flag"  
	"log"   

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // Import the OSS SDK package.
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // Import the package for processing authentication information.
)

var (
	region     string // Define a variable to store the region information obtained from the command line.
	bucketName string // Define a variable to store the bucket name obtained from the command line.
)

// The init function is executed before the main function to initialize the program.
func init() {
	// Set command line parameters to specify the region. This parameter is left empty by default.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Set command line parameters to specify the bucket name. This parameter is left empty by default.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // Parse command line parameters.

	// Check if the bucket name is specified. If not, the program outputs default parameters and terminates.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Log the error message and terminate the program.
	}

	// Check if the region information is specified. If not, the program outputs default parameters and terminates.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Log the error message and terminate the program.
	}

	// Create a configuration object, load the credential provider from environment variables and specify the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Create a new OSS client using the configurations.

	// Create a PutBucketArchiveDirectRead request to enable real-time access for Archive objects in a specific bucket.
	request := &oss.PutBucketArchiveDirectReadRequest{
		Bucket: oss.Ptr(bucketName), // Specify the name of the bucket.
		ArchiveDirectReadConfiguration: &oss.ArchiveDirectReadConfiguration{
			Enabled: oss.Ptr(true), // Enable real-time access. If this parameter is set to true, real-time access is enabled. If it is set to false, this feature is disabled.
		},
	}
	result, err := client.PutBucketArchiveDirectRead(context.TODO(), request) // Send the request to configure real-time access.
	if err != nil {
		log.Fatalf("failed to put bucket archive direct read %v", err) // If an error occurs, record the error message and terminate the program.
	}

	log.Printf("put bucket archive direct read result:%#v\n", result) // Display the result.
}

Query whether real-time access to Archive objects is enabled

You can use the following code to query whether real-time access to Archive objects is enabled.

package main

import (
	"context" 
	"flag"   
	"log"   

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // Import the OSS SDK package.
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // Import the package for processing authentication information.
)

var (
	region     string // Define a variable to store the region information obtained from the command line.
	bucketName string // Define a variable to store the bucket name obtained from the command line.
)

// The init function is executed before the main function to initialize the program.
func init() {
	// Set command line parameters to specify the region. This parameter is left empty by default.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Set command line parameters to specify the bucket name. This parameter is left empty by default.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // Parse command line parameters.

	// Check if the bucket name is specified. If not, the program outputs default parameters and terminates.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Log the error message and terminate the program.
	}

	// Check if the region information is specified. If not, the program outputs default parameters and terminates.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Log the error message and terminate the program.
	}

	// Create a configuration object, load the credential provider from environment variables and specify the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Create a new OSS client using the configurations.

	// Create a GetBucketArchiveDirectRead request to query the real-time access configurations for Archive objects in a specific bucket (assuming real-time access is enabled and configured).
	request := &oss.GetBucketArchiveDirectReadRequest{
		Bucket: oss.Ptr(bucketName), // Specify the name of the bucket.
	}
	result, err := client.GetBucketArchiveDirectRead(context.TODO(), request) // Send the request to query the configurations (assuming real-time access is enabled and configured).
	if err != nil {
		log.Fatalf("failed to get bucket archive direct read %v", err) // If an error occurs, record the error message and terminate the program.
	}

	log.Printf("get bucket archive direct read result:%#v\n", result) // Display the configurations (assuming real-time access is enabled and configured).
}

References

  • For the complete sample code to enable real-time access to Archive objects, see Github example.

  • For more information about the API operation to enable real-time access to Archive objects, see PutBucketArchiveDirectRead.

  • For more information about the API operation to query whether real-time access to Archive objects is enabled, see GetBucketArchiveDirectRead.