Real-time access to Archive objects using OSS SDK for Go 2.0

Updated at:

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

Notes

  • The sample code in this topic uses the region ID cn-hangzhou of the China (Hangzhou) region. By default, the public endpoint is used to access resources in a bucket. If you want to access resources in the bucket by using other Alibaba Cloud services in the same region in which the bucket is located, 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 obtained from environment variables. For more information about how to configure access credentials, see Configure access credentials (Go SDK V1).

Sample code

Enable real-time access to Archive objects

The following code provides an example of how 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

The following code provides an example of querying 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 used to enable real-time access to Archive objects, see Github example.

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

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