本文介紹如何添加、查看、批量列舉和刪除儲存空間(Bucket)的清單(Inventory)配置。
注意事項
本文範例程式碼以華東1(杭州)的地區ID
cn-hangzhou
為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱。本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
請確保您擁有調用添加、查看、列舉和刪除儲存空間清單配置的許可權。Bucket所有者預設擁有此類許可權,如果您無此類許可權,請先向Bucket所有者申請對應操作的許可權。
單個Bucket最多隻能有1000條清單配置。
配置清單的源Bucket與存放匯出的資訊清單檔所在的目標Bucket必須位於同一個Region。
範例程式碼
添加清單配置
以下代碼用於為某個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 // 儲存空間名稱
)
// init函數用於初始化命令列參數
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// 解析命令列參數
flag.Parse()
var (
accountId = "account id of the bucket" // 儲存空間所有者授予的賬戶ID,例如109885487000****
inventoryId = "inventory id" // 由使用者指定的清單名稱,清單名稱在當前Bucket下必須全域唯一
)
// 檢查bucket名稱是否為空白
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// 檢查region是否為空白
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立設定儲存空間清單的請求
putRequest := &oss.PutBucketInventoryRequest{
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
InventoryId: oss.Ptr(inventoryId), // 由使用者指定的清單名稱
InventoryConfiguration: &oss.InventoryConfiguration{
Id: oss.Ptr(inventoryId), // 由使用者指定的清單名稱
IsEnabled: oss.Ptr(true), // 啟用清單配置
Filter: &oss.InventoryFilter{
Prefix: oss.Ptr("filterPrefix"), // 設定清單篩選規則,指定篩選Object的首碼
LastModifyBeginTimeStamp: oss.Ptr(int64(1637883649)), // 最後修改開始時間戳
LastModifyEndTimeStamp: oss.Ptr(int64(1638347592)), // 最後修改結束時間戳記
LowerSizeBound: oss.Ptr(int64(1024)), // 檔案大小下限(位元組)
UpperSizeBound: oss.Ptr(int64(1048576)), // 檔案大小上限(位元組)
StorageClass: oss.Ptr("Standard,IA"), // 儲存類型
},
Destination: &oss.InventoryDestination{
OSSBucketDestination: &oss.InventoryOSSBucketDestination{
Format: oss.InventoryFormatCSV, // 匯出資訊清單檔的檔案格式
AccountId: oss.Ptr(accountId), // 儲存空間所有者授予的賬戶ID,例如109885487000****
RoleArn: oss.Ptr("acs:ram::" + accountId + ":role/AliyunOSSRole"), // 儲存空間所有者授予操作許可權的角色名稱,比如acs:ram::109885487000****:role/ram-test
Bucket: oss.Ptr("acs:oss:::" + bucketName), // 存放匯出的清單結果的Bucket名稱
Prefix: oss.Ptr("export/"), // 存放清單結果的儲存路徑首碼
},
},
Schedule: &oss.InventorySchedule{
Frequency: oss.InventoryFrequencyDaily, // 資訊清單檔匯出的周期(每天)
},
IncludedObjectVersions: oss.Ptr("All"), // 是否在清單中包含Object的所有版本資訊
},
}
// 執行設定儲存空間清單的請求
putResult, err := client.PutBucketInventory(context.TODO(), putRequest)
if err != nil {
log.Fatalf("failed to put bucket inventory %v", err)
}
// 列印設定儲存空間清單的結果
log.Printf("put bucket inventory result:%#v\n", putResult)
}
查看清單配置
以下代碼用於查看某個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 // 儲存空間名稱
)
// init函數用於初始化命令列參數
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// 解析命令列參數
flag.Parse()
// 填寫使用者指定的清單名稱
var inventoryId = "inventory id"
// 檢查bucket名稱是否為空白
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// 檢查region是否為空白
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立擷取儲存空間清單配置的請求
request := &oss.GetBucketInventoryRequest{
Bucket: oss.Ptr(bucketName),
InventoryId: oss.Ptr(inventoryId),
}
// 執行擷取儲存空間清單配置的操作並處理結果
result, err := client.GetBucketInventory(context.TODO(), request)
if err != nil {
log.Fatalf("failed to get bucket inventory %v", err)
}
// 列印擷取儲存空間清單配置的結果
log.Printf("get bucket inventory result:%#v\n", result)
}
列舉清單配置
說明
單次請求最多可擷取100條清單配置項內容。若需擷取超過100條清單配置項,則需發送多次請求,並保留相應的Token,作為下一次請求的參數。
以下代碼用於列舉某個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 // 儲存空間名稱
)
// init函數用於初始化命令列參數
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// 解析命令列參數
flag.Parse()
// 檢查region是否為空白
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立列出儲存空間清單的請求
request := &oss.ListBucketInventoryRequest{
Bucket: oss.Ptr(bucketName),
}
// 執行列出儲存空間清單的操作並處理結果
result, err := client.ListBucketInventory(context.TODO(), request)
if err != nil {
log.Fatalf("failed to list bucket inventory %v", err)
}
// 列印列出儲存空間清單的結果
log.Printf("list bucket inventory 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 // 儲存空間名稱
)
// init函數用於初始化命令列參數
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// 解析命令列參數
flag.Parse()
// 填寫使用者指定的清單名稱
var inventoryId = "inventory id"
// 檢查bucket名稱是否為空白
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// 檢查region是否為空白
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立刪除儲存空間清單配置的請求
request := &oss.DeleteBucketInventoryRequest{
Bucket: oss.Ptr(bucketName),
InventoryId: oss.Ptr(inventoryId),
}
// 執行刪除儲存空間清單配置的操作並處理結果
result, err := client.DeleteBucketInventory(context.TODO(), request)
if err != nil {
log.Fatalf("failed to delete bucket inventory %v", err)
}
// 列印刪除儲存空間清單配置的結果
log.Printf("delete bucket inventory result:%#v\n", result)
}
相關文檔
關於添加儲存空間清單配置的API介面說明,請參見PutBucketInventory。
關於查看儲存空間清單配置的API介面說明,請參見GetBucketInventory。
關於批量列舉儲存空間清單配置的API介面說明,請參見ListBucketInventory。
關於刪除儲存空間清單配置的API介面說明,請參見DeleteBucketInventory。