列举桶清单
功能说明
桶清单功能可以定期生成桶内对象的元数据信息,通过查看这些信息,可以帮助您更好地了解桶内对象的状态。调用本接口可以获取桶的所有清单配置,获取到的清单配置一次性返回,不分页。
要正确执行此操作,需要确保执行者有GetBucketInventoryConfiguration权限。缺省情况下只有桶的所有者可以执行此操作,也可以通过设置桶策略或用户策略授权给其他用户。
有关权限控制的更多信息请参考《对象存储服务权限配置指南》的OBS权限控制概述章节。
融合桶场景,主桶支持配置桶清单,备桶不支持配置桶清单。
接口约束
- OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
- 须知:调用桶清单相关接口前,需在初始化obsClient时调用obs.WithSignature(obs.SignatureObs)指定协议类型。
方法定义
func (obsClient ObsClient) ListBucketInventory(bucketName string, extensions ...extensionOptions) (output *ListBucketInventoryOutput, err error)
请求参数说明
表1 请求参数说明
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| bucketName | string | 是 | 桶名。 |
响应参数说明
表2 ListBucketInventoryOutput参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| BaseModel | BaseModel | 基础模型。 |
| InventoryConfigurations | []InventoryConfiguration | 清单配置列表。 |
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| StatusCode | int | 参数解释: HTTP状态码。 约束限制: 无 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 |
| RequestId | string | 参数解释: OBS服务端返回的请求ID。 约束限制: 无 取值范围: 无 默认取值: 无 |
| ResponseHeaders | map[string][]string | 参数解释: HTTP响应头信息。 约束限制: 无 取值范围: 无 默认取值: 无 |
表2 InventoryConfiguration参数说明
| 字段 | 类型 | 说明 |
|---|---|---|
| Id | string | 参数解释: 清单配置 ID。 取值范围: 无。 |
| IsEnabled | bool | 参数解释: 规则是否启用,如果设置为true,则生成清单,反之不生成。 取值范围:
|
| Destination | InventoryDestination | 参数解释: 清单的目标配置。 取值范围: 无。 |
| Schedule | InventorySchedule | 参数解释: 清单文件的生成周期。 取值范围: 无。 |
| Filter | *InventoryFilter | 参数解释: 清单过滤器配置,清单只包含符合过滤器规则的对象(只支持按对象名前缀进行过滤),如果没有配置过滤器,则包含所有对象。 取值范围: 无。 |
| IncludedObjectVersions | string | 参数解释: 清单文件中包含对象的多版本配置。 取值范围:
|
| OptionalFields | *InventoryOptionalFields | 参数解释: 在此选项中可以添加一些额外的对象元数据字段,生成的清单文件中会包含OptionalFields中配置的字段。 取值范围: 无。 |
表4 InventoryDestination参数说明
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| Format | string | 是 | 生成的清单文件的格式,现只支持CSV格式。 |
| Bucket | string | 是 | 存放清单文件的目标桶的桶名。 |
| Prefix | string | 是 | 生成的清单文件对象名会以此前缀开头,如果不配置前缀,则生成的清单文件对象名默认以BucketInventory开头。 |
表5 InventorySchedule参数说明
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| Frequency | string | 是 | 清单文件的生成周期,只支持按天和按周生成清单,第一次配置完桶清单,任务会在一个小时内启动,之后每隔一个周期启动一次。 有效值:Daily、Weekly |
表6 InventoryFilter参数说明
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| Prefix | string | 否 | 前缀过滤条件,清单文件中只生成以此前缀开头的对象列表。 |
表7 InventoryOptionalFields参数说明
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| Fields | []string | 否 | 可选字段列表,有效值 Size、LastModifiedDate、StorageClass、ETag、IsMultipartUploaded、ReplicationStatus、EncryptionStatus |
代码示例
本示例用于列举桶examplebucket上所有的桶清单配置。
package main
import (
"fmt"
"log"
obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
)
func main() {
//推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。
//您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。
ak := os.Getenv("AccessKeyID")
sk := os.Getenv("SecretAccessKey")
// 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。
securityToken := os.Getenv("SecurityToken")
// endpoint填写Bucket对应的Endpoint,这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com"
// 创建客户端
obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityToken(securityToken))
if err != nil {
fmt.Printf("Create obsClient error, errMsg: %s", err.Error())
}
// 列举所有清单配置
output, err := client.ListBucketInventory("my-bucket")
if err != nil {
log.Fatalf("Failed to list bucket inventory: %v", err)
}
fmt.Printf("Request ID: %s\n", output.RequestId)
fmt.Printf("Total configurations: %d\n", len(output.InventoryConfigurations))
for i, config := range output.InventoryConfigurations {
fmt.Printf("\n[%d] Inventory Configuration:\n", i+1)
fmt.Printf(" ID: %s\n", config.Id)
fmt.Printf(" Enabled: %v\n", config.IsEnabled)
fmt.Printf(" Frequency: %s\n", config.Schedule.Frequency)
fmt.Printf(" Format: %s\n", config.Destination.Format)
fmt.Printf(" Destination: %s/%s\n", config.Destination.Bucket, config.Destination.Prefix)
if config.Filter != nil {
fmt.Printf(" Filter Prefix: %s\n", config.Filter.Prefix)
}
fmt.Printf(" Included Versions: %s\n", config.IncludedObjectVersions)
if config.OptionalFields != nil {
fmt.Printf(" Optional Fields: %v\n", config.OptionalFields.Fields)
}
}
if output.IsTruncated {
fmt.Printf("\nNote: Results truncated. NextId: %s\n", output.NextId)
}
}