元数据管理Metadata(Go SDK V2)

更新时间:
复制 MD 格式

本文介绍如何通过Go SDK V2创建、查看、更新和删除存储空间(Bucket)的元数据表配置,包括日志表(Journal Table)配置和清单表(Inventory Table)配置。

功能说明

元数据管理(Metadata)为存储空间(Bucket)提供元数据表配置能力,包含以下两类配置:

  • 日志表配置(JournalTableConfiguration):通过RecordExpiration控制日志记录的开启状态(Expiration取值ENABLED或DISABLED)及记录保留天数(Days)。

  • 清单表配置(InventoryTableConfiguration):通过ConfigurationState控制清单表的启用状态(取值ENABLED或DISABLED),并可通过EncryptionConfiguration指定加密算法(SseAlgorithm)。

注意事项

  • 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,其他地域请根据实际情况替换。

  • 本文以从环境变量读取访问凭证为例。使用前请确保已配置访问凭证(AccessKey)。

  • 请确保您拥有对目标Bucket执行元数据表配置操作的权限。Bucket所有者默认拥有此类权限,如果您无此类权限,请先向Bucket所有者申请对应操作的权限。

  • 您也可以通过OSS控制台开启、修改或关闭元数据管理功能。

示例代码

创建元数据表配置

以下代码用于为某个Bucket创建元数据表配置(同时设置日志表和清单表):

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	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)

	request := &oss.CreateBucketMetadataConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
		MetadataConfiguration: &oss.MetadataConfiguration{
			JournalTableConfiguration: &oss.JournalTableConfiguration{
				RecordExpiration: &oss.MetadataTableRecordExpiration{
					Expiration: oss.Ptr("ENABLED"),
					Days:       oss.Ptr(7),
				},
			},
			InventoryTableConfiguration: &oss.InventoryTableConfiguration{
				ConfigurationState: oss.Ptr("ENABLED"),
				EncryptionConfiguration: &oss.MetadataTableEncryptionConfiguration{
					SseAlgorithm: oss.Ptr("AES256"),
				},
			},
		},
	}
	result, err := client.CreateBucketMetadataConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to create bucket metadata table configuration %v", err)
	}

	log.Printf("create bucket metadata table configuration result:%#v\n", result)
}

查看元数据表配置

以下代码用于查看某个Bucket的元数据表配置:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	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)

	request := &oss.GetBucketMetadataConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
	}
	result, err := client.GetBucketMetadataConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to get bucket metadata table configuration %v", err)
	}

	log.Printf("get bucket metadata table configuration result:%#v\n", result)
}

更新清单表(Inventory Table)配置

以下代码用于更新某个Bucket的清单表配置:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	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)

	request := &oss.UpdateBucketMetadataInventoryTableConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
		InventoryTableConfiguration: &oss.InventoryTableConfiguration{
			ConfigurationState: oss.Ptr("DISABLED"),
		},
	}
	result, err := client.UpdateBucketMetadataInventoryTableConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to update bucket metadata inventory table configuration %v", err)
	}

	log.Printf("update bucket metadata inventory table configuration result:%#v\n", result)
}

更新日志表(Journal Table)配置

以下代码用于更新某个Bucket的日志表配置:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	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)

	request := &oss.UpdateBucketMetadataJournalTableConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
		JournalTableConfiguration: &oss.JournalTableConfiguration{
			RecordExpiration: &oss.MetadataTableRecordExpiration{
				Expiration: oss.Ptr("DISABLED"),
			},
		},
	}
	result, err := client.UpdateBucketMetadataJournalTableConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to update bucket metadata journal table configuration %v", err)
	}

	log.Printf("update bucket metadata journal table configuration result:%#v\n", result)
}

删除元数据表配置

以下代码用于删除某个Bucket的元数据表配置:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	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)

	request := &oss.DeleteBucketMetadataConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
	}
	result, err := client.DeleteBucketMetadataConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to delete bucket metadata table configuration %v", err)
	}

	log.Printf("delete bucket metadata table configuration result:%#v\n", result)
}

相关文档