本文介紹如何使用Go SDK V2管理配置資源集區QoS。
注意事項
本文範例程式碼以華東1(杭州)的地區ID
cn-hangzhou
為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱。
Bucket頻寬管理
為資源集區內的Bucket設定流控
package main
import (
"bytes"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func PutBucketQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱
bucketName := "examplebucket"
// 讀取QoS設定檔內容
qosConf, err := os.ReadFile("qos.xml")
if err != nil {
// 如果讀取QoS設定檔時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read qos.xml: %v\n", err)
os.Exit(1)
}
// 計算輸入資料的MD5值,並將其轉換為Base64編碼字串
calcMd5 := func(input []byte) string {
if len(input) == 0 {
return "1B2M2Y8AsgTpgAmY7PhCfg=="
}
h := md5.New()
h.Write(input)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "PutBucketQoSInfo", // 操作名稱
Method: "PUT", // HTTP方法類型
Parameters: map[string]string{
"qosInfo": "", // QoS資訊相關參數
},
Headers: map[string]string{
"Content-MD5": calcMd5(qosConf), // 佈建要求體的MD5校正碼,用於驗證資料完整性
},
Body: bytes.NewReader(qosConf), // 請求體,包含QoS配置內容
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of PutBucketQoSInfo:", res.Status)
}
擷取Bucket流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func GetBucketQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱
bucketName := "examplebucket"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "GetBucketQoSInfo", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"qosInfo": "", // QoS資訊相關參數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of GetBucketQoSInfo:", string(body))
}
刪除資源集區內指定Bucket的流控配置
package main
import (
"context"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func DeleteBucketQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱
bucketName := "examplebucket"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "DeleteBucketQoSInfo", // 操作名稱
Method: "DELETE", // HTTP方法類型
Parameters: map[string]string{
"qosInfo": "", // QoS資訊相關參數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於DELETE請求通常為空白
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of DeleteBucketQoSInfo:", res.Status)
}
Bucket層級不同要求者的頻寬管理
佈建要求者在Bucket層級的流控
package main
import (
"bytes"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func PutBucketRequesterQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱和要求者ID
bucketName := "examplebucket"
requester := "2598732222222xxxx"
// 讀取QoS設定檔內容
qosConf, err := os.ReadFile("qos.xml")
if err != nil {
// 如果讀取QoS設定檔時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read qos.xml: %v\n", err)
os.Exit(1)
}
// 計算輸入資料的MD5值,並將其轉換為Base64編碼字串
calcMd5 := func(input []byte) string {
if len(input) == 0 {
return "1B2M2Y8AsgTpgAmY7PhCfg=="
}
h := md5.New()
h.Write(input)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "PutBucketRequesterQoSInfo", // 操作名稱應與實際操作匹配
Method: "PUT", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"qosRequester": requester, // 要求者ID
},
Headers: map[string]string{
"Content-MD5": calcMd5(qosConf), // 佈建要求體的MD5校正碼,用於驗證資料完整性
},
Body: bytes.NewReader(qosConf), // 請求體,包含QoS配置內容
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of PutBucketRequesterQoSInfo:", res.Status)
}
擷取指定要求者在Bucket層級的流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func GetBucketRequesterQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱和要求者ID
bucketName := "examplebucket"
requester := "2598732222222xxxx"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "GetBucketRequesterQoSInfo", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"qosRequester": requester, // 要求者ID
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of GetBucketRequesterQoSInfo:", string(body))
}
擷取所有要求者在Bucket層級的流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func ListBucketRequesterQoSInfos() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱
bucketName := "examplebucket"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "ListBucketRequesterQoSInfos", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
// 選擇性參數:
// "continuation-token": "25987311111111xxxx", // 用於分頁擷取結果的續傳令牌
// "max-keys": "1", // 每次返回的最大條目數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of ListBucketRequesterQoSInfos:", string(body))
}
刪除Bucket的某個要求者流控配置
package main
import (
"context"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func DeleteBucketRequesterQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義儲存空間名稱和要求者ID
bucketName := "examplebucket"
requester := "2033310434633xxxx"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "DeleteBucketRequesterQoSInfo", // 操作名稱
Method: "DELETE", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"qosRequester": requester, // 要求者ID
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於DELETE請求通常為空白
Bucket: oss.Ptr(bucketName), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of DeleteBucketRequesterQoSInfo:", res.Status)
}
資源集區層級不同要求者的頻寬管理
擷取當前帳號下的所有資源集區資訊
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func ListResourcePools() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "ListResourcePools", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"resourcePool": "", // 資源集區相關參數
// 選擇性參數:
// "continuation-token": "example-resource-pool", // 用於分頁擷取結果的續傳令牌
// "max-keys": "1", // 每次返回的最大條目數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: nil, // 此操作不針對特定儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of ListResourcePools:", string(body))
}
擷取指定資源集區的資訊
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func GetResourcePoolInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "GetResourcePoolInfo", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"resourcePoolInfo": "", // 資源集區資訊相關參數
"resourcePool": "example-resource-pool", // 需要查詢資訊的具體資源集區名稱
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: nil, // 此操作不針對特定儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of GetResourcePoolInfo:", string(body))
}
擷取指定資源集區包含的Bucket列表
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func ListResourcePoolBuckets() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "ListResourcePoolBucketGroups", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePool": "example-resource-pool", // 資源集區名稱
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體
Bucket: nil, // 儲存空間名稱,這裡為空白,因為此操作不針對特定的儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of ListResourcePoolBucketGroups:", string(body))
}
為資源集區的要求者配置流控
package main
import (
"bytes"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func PutResourcePoolRequesterQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱和要求者ID
resourcePool := "example-resource-pool"
requester := "2598733333333xxxx"
// 讀取QoS設定檔內容
qosConf, err := os.ReadFile("qos.xml")
if err != nil {
// 如果讀取QoS設定檔時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read qos.xml: %v\n", err)
os.Exit(1)
}
// 計算輸入資料的MD5值,並將其轉換為Base64編碼字串
calcMd5 := func(input []byte) string {
if len(input) == 0 {
return "1B2M2Y8AsgTpgAmY7PhCfg=="
}
h := md5.New()
h.Write(input)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "PutResourcePoolRequesterQoSInfo", // 操作名稱
Method: "PUT", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"resourcePool": resourcePool, // 資源集區名稱
"qosRequester": requester, // 要求者ID
},
Headers: map[string]string{
"Content-MD5": calcMd5(qosConf), // 佈建要求體的MD5校正碼,用於驗證資料完整性
},
Body: bytes.NewReader(qosConf), // 請求體,包含QoS配置內容
Bucket: nil, // 此操作不針對特定儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of PutResourcePoolRequesterQoSInfo:", res.Status)
}
擷取指定要求者在資源集區的流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func GetResourcePoolRequesterQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱和要求者ID
resourcePool := "example-resource-pool"
requester := "2598732222222xxxx"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "GetResourcePoolRequesterQoSInfo", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"resourcePool": resourcePool, // 資源集區名稱
"qosRequester": requester, // 要求者ID
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 對於GET請求通常不需要請求體
Bucket: nil, // 此操作不針對特定儲存桶
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of GetResourcePoolRequesterQoSInfo:", string(body))
}
擷取所有要求者在資源集區的流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func ListResourcePoolRequesterQoSInfos() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱
resourcePool := "example-resource-pool"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "ListResourcePoolRequesterQoSInfos", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"resourcePool": resourcePool, // 資源集區名稱
// 選擇性參數:
// "continuation-token": "25987311111111xxxx", // 用於分頁擷取結果的續傳令牌
// "max-keys": "1", // 每次返回的最大條目數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 對於GET請求通常不需要請求體
Bucket: nil, // 此操作不針對特定儲存桶
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of ListResourcePoolRequesterQoSInfos:", string(body))
}
刪除指定要求者在資源集區的流控配置
package main
import (
"context"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func DeleteResourcePoolRequesterQoSInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱和要求者ID
resourcePool := "example-resource-pool"
requester := "2598732222222xxxx"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "DeleteResourcePoolRequesterQoSInfo", // 操作名稱
Method: "DELETE", // HTTP方法類型
Parameters: map[string]string{
"requesterQosInfo": "", // 要求者QoS資訊相關參數
"resourcePool": resourcePool, // 資源集區名稱
"qosRequester": requester, // 要求者ID
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 對於DELETE請求通常不需要請求體
Bucket: nil, // 此操作不針對特定儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of DeleteResourcePoolRequesterQoSInfo:", res.Status)
}
BucketGroup頻寬管理
將資源集區中的Bucket加入到特定BucketGroup
package main
import (
"context"
"fmt"
"io"
"os"
"strings"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// PutBucketResourcePoolBucketGroup 函數用於向指定儲存空間組中添加資源集區
func PutBucketResourcePoolBucketGroup() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "PutBucketResourcePoolBucketGroup", // 操作名稱
Method: "PUT", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePoolBucketGroup": "example-group", // 資源集區儲存空間組名稱
"resourcePool": "example-resource-pool", // 資源集區名稱
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體
Bucket: oss.Ptr("test-bucket"), // 儲存空間名稱
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
var body []byte
if b, ok := res.Body.(io.Reader); ok {
buf := new(strings.Builder)
_, _ = io.Copy(buf, b)
body = []byte(buf.String())
} else {
body = []byte(fmt.Sprintf("%v", res.Body))
}
// 列印操作結果
fmt.Println("The result of PutBucketResourcePoolBucketGroup:", string(body))
}
擷取特定資源集區中的BucketGroup列表
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// ListResourcePoolBucketGroups 函數用於列出指定資源集區中的儲存空間組。
func ListResourcePoolBucketGroups() {
// 定義地區,這裡預設使用"cn-hangzhou"
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "ListResourcePoolBucketGroups", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePool": "example-resource-pool", // 資源集區名稱
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體
Bucket: nil, // 儲存空間名稱,這裡為空白,因為此操作不針對特定的儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of ListResourcePoolBucketGroups:", string(body))
}
修改資源集區中BucketGroup的流控配置
package main
import (
"bytes"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func PutResourcePoolBucketGroupQosInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱和儲存空間組名稱
resourcePool := "example-resource-pool"
group := "example-group"
// 讀取QoS設定檔內容
qosConf, err := os.ReadFile("qos.xml")
if err != nil {
// 如果讀取QoS設定檔時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read qos.xml: %v\n", err)
os.Exit(1)
}
// 計算輸入資料的MD5值,並將其轉換為Base64編碼字串
calcMd5 := func(input []byte) string {
if len(input) == 0 {
return "1B2M2Y8AsgTpgAmY7PhCfg=="
}
h := md5.New()
h.Write(input)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "PutResourcePoolBucketGroupQoSInfo", // 操作名稱
Method: "PUT", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePool": resourcePool, // 資源集區名稱
"resourcePoolBucketGroup": group, // 儲存空間組名稱
"resourcePoolBucketGroupQosInfo": "", // QoS資訊相關參數
},
Headers: map[string]string{ // HTTP頭資訊
"Content-MD5": calcMd5(qosConf), // 佈建要求體的MD5校正碼,用於驗證資料完整性
},
Body: bytes.NewReader(qosConf), // 請求體,包含QoS配置內容
Bucket: nil, // 儲存空間名稱,這裡為空白,因為此操作不針對特定的儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of PutResourcePoolBucketGroupQoSInfo:", res.Status)
}
擷取資源集區中BucketGroup的流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// GetResourcePoolBucketGroupQosInfo 函數用於擷取指定資源集區儲存空間組的QoS資訊。
func GetResourcePoolBucketGroupQosInfo() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱和儲存空間組名稱
resourcePool := "example-resource-pool"
ResourcePoolBucketGroup := "example-group"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "GetResourcePoolBucketGroupQoSInfo", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePool": resourcePool, // 資源集區名稱
"resourcePoolBucketGroup": ResourcePoolBucketGroup, // 儲存空間組名稱
"resourcePoolBucketGroupQoSInfo": "", // QoS資訊相關參數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: nil, // 儲存空間名稱,這裡為空白,因為此操作不針對特定的儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of GetResourcePoolBucketGroupQoSInfo:", string(body))
}
列舉資源集區中BucketGroup的流控配置
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// ListResourcePoolBucketGroupQosInfos 函數用於列出指定資源集區中所有儲存空間組的QoS資訊。
func ListResourcePoolBucketGroupQosInfos() {
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱
resourcePool := "example-resource-pool"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "ListResourcePoolBucketGroupQoSInfos", // 操作名稱
Method: "GET", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePool": resourcePool, // 資源集區名稱
// 選擇性參數:
// "continuation-token": "25987311111111xxxx", // 續傳令牌,可用於分頁擷取結果
// "max-keys": "1", // 最大返回條目數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於GET請求通常為空白
Bucket: nil, // 儲存空間名稱,這裡為空白,因為此操作不針對特定的儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 讀取響應體內容
body, err := io.ReadAll(res.Body)
if err != nil {
// 如果讀取響應體時發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("failed to read response body: %v\n", err)
os.Exit(1)
}
// 關閉響應體,確保資源被正確釋放
if res.Body != nil {
res.Body.Close()
}
// 列印操作結果
fmt.Println("The result of ListResourcePoolBucketGroupQoSInfos:", string(body))
}
刪除資源集區中BucketGroup的流控配置
package main
import (
"context"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// DeleteResourcePoolBucketGroupQosInfo 函數用於刪除指定資源集區儲存空間組的QoS資訊。
func DeleteResourcePoolBucketGroupQosInfo() {
// 定義地區,這裡預設使用"cn-hangzhou"
var region = "cn-hangzhou"
// 載入預設配置並設定憑證提供者和地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 定義資源集區名稱和儲存空間組名稱
resourcePool := "example-resource-pool"
group := "example-group"
// 建立操作輸入參數,包括操作名稱、方法類型、參數等
input := &oss.OperationInput{
OpName: "DeleteResourcePoolBucketGroupQoSInfo", // 操作名稱
Method: "DELETE", // HTTP方法類型
Parameters: map[string]string{ // 參數列表
"resourcePool": resourcePool, // 資源集區名稱
"resourcePoolBucketGroup": group, // 儲存空間組名稱
"resourcePoolBucketGroupQoSInfo": "", // QoS資訊相關參數
},
Headers: map[string]string{}, // HTTP頭資訊
Body: nil, // 請求體,對於DELETE請求通常為空白
Bucket: nil, // 儲存空間名稱,這裡為空白,因為此操作不針對特定的儲存空間
}
// 執行操作請求,並接收響應結果或錯誤
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// 如果發生錯誤,則列印錯誤資訊並退出程式
fmt.Printf("invoke operation got error: %v\n", err)
os.Exit(1)
}
// 列印操作結果
fmt.Println("The result of DeleteResourcePoolBucketGroupQoSInfo:", res.Status)
}
相關文檔
關於資源集區QoS操作的API更多詳情,請參見關於資源集區QoS操作。
關於資源集區QoS的更多配置樣本,請參見資源集區QoS配置樣本。