本文介绍如何使用Go SDK V2为Bucket开启或关闭归档直读的功能。
注意事项
本文示例代码以华东1(杭州)的地域ID
cn-hangzhou
为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见OSS地域和访问域名。本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见配置访问凭证。
示例代码
开启Bucket归档直读
您可以使用以下代码开启Bucket归档直读。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // 阿里云OSS服务的SDK包
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 处理认证信息的包
)
var (
region string // 定义一个变量来保存从命令行获取的区域(Region)信息
bucketName string // 定义一个变量来保存从命令行获取的存储空间名称
)
// init函数在main函数之前执行,用来初始化程序。
func init() {
// 设置命令行参数来指定region,默认为空字符串
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// 设置命令行参数来指定bucket名称,默认为空字符串
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse() // 解析命令行参数
// 检查是否提供了存储空间名称,如果没有提供,则输出默认参数并退出程序
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required") // 记录错误并终止程序
}
// 检查是否提供了区域信息,如果没有提供,则输出默认参数并退出程序
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 记录错误并终止程序
}
// 创建配置对象,并使用环境变量作为凭证提供者和指定的区域
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 使用配置创建一个新的OSS客户端实例
// 构建一个PutBucketArchiveDirectRead请求,用于启用特定存储空间的归档直读功能
request := &oss.PutBucketArchiveDirectReadRequest{
Bucket: oss.Ptr(bucketName), // 指定要操作的存储空间名称
ArchiveDirectReadConfiguration: &oss.ArchiveDirectReadConfiguration{
Enabled: oss.Ptr(true), // 启用归档直读配置。设置true为开启归档直读,设置false为关闭归档直读
},
}
result, err := client.PutBucketArchiveDirectRead(context.TODO(), request) // 发送请求以设置存储空间的归档直读配置
if err != nil {
log.Fatalf("failed to put bucket archive direct read %v", err) // 如果有错误发生,记录错误信息并终止程序
}
log.Printf("put bucket archive direct read result:%#v\n", result) // 打印设置存储空间归档直读的结果
}
查看Bucket是否开启归档直读
您可以使用以下代码查看Bucket是否开启归档直读。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // 阿里云OSS服务的SDK包
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 处理认证信息的包
)
var (
region string // 定义一个变量来保存从命令行获取的区域(Region)信息
bucketName string // 定义一个变量来保存从命令行获取的存储空间名称
)
// init函数在main函数之前执行,用来初始化程序。
func init() {
// 设置命令行参数来指定region,默认为空字符串
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// 设置命令行参数来指定bucket名称,默认为空字符串
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse() // 解析命令行参数
// 检查是否提供了存储空间名称,如果没有提供,则输出默认参数并退出程序
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required") // 记录错误并终止程序
}
// 检查是否提供了区域信息,如果没有提供,则输出默认参数并退出程序
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 记录错误并终止程序
}
// 创建配置对象,并使用环境变量作为凭证提供者和指定的区域
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 使用配置创建一个新的OSS客户端实例
// 构建一个GetBucketArchiveDirectRead请求,用于获取特定存储空间的归档直读配置(假设存在)
request := &oss.GetBucketArchiveDirectReadRequest{
Bucket: oss.Ptr(bucketName), // 指定要查询的存储空间名称
}
result, err := client.GetBucketArchiveDirectRead(context.TODO(), request) // 发送请求以获取存储空间的归档直读配置(假设存在)
if err != nil {
log.Fatalf("failed to get bucket archive direct read %v", err) // 如果有错误发生,记录错误信息并终止程序
}
log.Printf("get bucket archive direct read result:%#v\n", result) // 打印获取到的归档直读配置结果(假设存在)
}
相关文档
关于开启Bucket归档直读的完整示例,请参见Github示例。
关于开启Bucket归档直读的API接口说明,请参见PutBucketArchiveDirectRead。
关于查看Bucket是否开启归档直读的API接口说明,请参见GetBucketArchiveDirectRead。