详情页标题前

阿里云对象存储OSSGo存储空间清单-云淘科技

详情页1

本文介绍如何添加、查看、批量列举和删除存储空间(Bucket)的清单(Inventory)配置

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见Go配置访问凭证。

  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见Go初始化。
  • 请确保您拥有调用添加、查看、列举和删除存储空间清单配置的权限。Bucket所有者默认拥有此类权限,如果您无此类权限,请先向Bucket所有者申请对应操作的权限。
  • 单个Bucket最多只能有1000条清单配置。
  • 配置清单的源Bucket与存放导出的清单文件所在的目标Bucket必须位于同一个Region。

添加清单配置

以下代码用于为某个Bucket添加清单配置:

package main

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	/// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	IsEnabled := true

	// 如果需要使用KMS加密清单,请参考如下设置。
	//var invEncryption oss.InvEncryption
	//var invSseOss oss.InvSseOss
	//var invSseKms oss.InvSseKms
	//invSseKms.KmsId = "" // 填写KMS密钥ID。
	//invEncryption.SseOss = &invSseOss // 使用OSS完全托管加密(SSE-OSS)方式进行加密。
	//invEncryption.SseKms = &invSseKms // 使用KMS托管密钥(SSE-KMS)的方式进行加密。

	invConfig := oss.InventoryConfiguration{
		// 由用户指定的清单名称,清单名称在当前Bucket下必须全局唯一。
		Id: "yourInventoryId2",
		// 启用清单配置。
		IsEnabled: &IsEnabled,

		// 设置清单筛选规则,指定筛选Object的前缀。
		Prefix: "yourFilterPrefix",
		OSSBucketDestination: oss.OSSBucketDestination{
			// 导出清单文件的文件格式。
			Format: "CSV",

			// 存储空间所有者授予的账户ID,例如109885487000****。
			AccountId: "yourGrantAccountId",

			// 存储空间所有者授予操作权限的角色名,比如acs:ram::109885487000****:role/ram-test。
			RoleArn: "yourRoleArn",

			// 存放导出的清单结果的Bucket名称。
			Bucket: "acs:oss:::" + "yourDestBucketName",

			// 存放清单结果的存储路径前缀。
			Prefix: "yourDestPrefix",

			// 如果清单需要加密,请参考以下代码。
			//Encryption:     &invEncryption,
		},

		// 清单文件导出的周期。
		Frequency: "Daily",

		// 是否在清单中包含Object的所有版本信息。
		IncludedObjectVersions: "All",

		OptionalFields: oss.OptionalFields{
			// 清单结果中包含的配置项。
			Field: []string{
				"Size", "LastModifiedDate", "ETag", "StorageClass", "IsMultipartUploaded", "EncryptionStatus",
			},
		},
	}
	// yourBucketName填写待配置清单规则的Bucket名称。
	err = client.SetBucketInventory("yourBucketName", invConfig)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

查看清单配置

以下代码用于查看某个Bucket的清单配置:

package main

import (
	"encoding/xml"
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	/// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// yourBucketName填写Bucket名称。
	// yourInventoryId填写清单规则名称。
	result, err := client.GetBucketInventory("yourBucketName", "yourInventoryId")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 打印清单信息。
	bs, err := xml.MarshalIndent(result, "  ", "    ")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println(string(bs))
}

批量列举清单配置

说明

单次请求最多可获取100条清单配置项内容。若需获取超过100条清单配置项,则需发送多次请求,并保留相应的Token,作为下一次请求的参数。

以下代码用于批量列举某个Bucket的清单配置:

package main

import (
	"encoding/xml"
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	/// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	var sumResult oss.ListInventoryConfigurationsResult
	vmarker := ""
	for {
		// yourBucketName填写Bucket名称。
		listResult, err := client.ListBucketInventory("yourBucketName", vmarker)
		if err != nil {
			fmt.Println("Error:", err)
			os.Exit(-1)
		}
		sumResult.InventoryConfiguration = append(sumResult.InventoryConfiguration, listResult.InventoryConfiguration...)
		if listResult.IsTruncated != nil && *listResult.IsTruncated {
			vmarker = listResult.NextContinuationToken
		} else {
			break
		}
	}

	// 打印所有清单信息。
	bs, err := xml.MarshalIndent(sumResult, "  ", "    ")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	fmt.Println(string(bs))
}

删除清单配置

以下代码用于删除某个Bucket的清单配置:

package main

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	/// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// 删除清单配置。
	// yourBucketName填写Bucket名称。
	// yourInventoryId填写清单规则名称。
	err = client.DeleteBucketInventory("yourBucketName", "yourInventoryId")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

相关文档

  • 关于存储空间清单的完整示例代码,请参见GitHub示例。

  • 关于添加存储空间清单配置的API接口说明,请参见PutBucketInventory。

  • 关于查看存储空间清单配置的API接口说明,请参见GetBucketInventory。

  • 关于批量列举存储空间清单配置的API接口说明,请参见ListBucketInventory。

  • 关于删除存储空间清单配置的API接口说明,请参见DeleteBucketInventory。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158231.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云日志服务SLS对接DataV-云淘科技

    DataV是阿里云的可视化产品,能帮助您通过图形化的界面轻松搭建专业水准的可视化应用,丰富表现日志分析数据。本文档介绍如何通过日志服务对接DataV进行大屏数据展示。 前提条件 已采集数据。具体操作,请参见数据采集。 已创建索引。具体操作,请参见创建索引。 背景信息 实时大屏广泛应用于大型在线促销活动。实时大屏基于流式计算架构,该架构包含以下模块: 数据采集…

    2023年12月10日
  • 阿里云日志服务SLS通过DaemonSet-控制台方式采集容器标准输出-云淘科技

    本文介绍如何通过控制台创建Logtail配置,并以DaemonSet采集方式采集容器标准输出。 前提条件 已安装Logtail组件。具体操作,请参见安装Logtail组件(Kubernetes集群)。 在您安装Logtail组件时所使用的Project中已完成Logstore创建。具体操作,请参见创建Logstore。 目标容器持续产生日志。重要 Logta…

    2023年12月10日
  • 阿里云对象存储OSS转换Bucket的存储冗余类型-云淘科技

    随着您的业务对数据持久性和服务可用性要求的提高,采用单可用区的数据冗余存储机制的本地冗余存储已不再满足您的业务要求,您可以将Bucket的存储冗余类型从本地冗余存储转换为同城冗余存储,从而具备抵抗可用区级故障的能力。本文介绍如何将Bucket的存储冗余类型从本地冗余存储转换为同城冗余存储。 前提条件 Bucket所属地域支持转换存储冗余类型。支持转换存储冗余…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSS403错误-云淘科技

    本文介绍OSS返回403错误的原因和解决方案。 AccessDenied The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint 问题原因:访…

    阿里云对象存储 2023年12月10日
  • 阿里云日志服务SLSLogstash消费-云淘科技

    日志服务支持通过Logstash消费数据,您可以通过配置日志服务的Input插件对接Logstash获取日志服务中的数据并写入到其他系统中,例如Kafka、HDFS等。 功能特性 分布式协同消费:可配置多台服务器同时消费某一个Logstore。 高性能:基于Java ConsumerGroup实现,单核消费速度可达20 MB/s(压缩前)。 高可靠性:消费进…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。