赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 开发参考
  5. SDK参考
  6. Go
  7. 2.0手册
  8. 资源池QoS
  9. 资源池QoS管理

资源池QoS管理

  • 资源池QoS
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

本文介绍如何使用Go SDK V2管理配置资源池QoS。

注意事项

  • 本文示例代码以华东1(杭州)的地域IDcn-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 := "hz-rp-test-01"

	// 读取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 := "hz-rp-test-01"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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 := "hz-rp-test-01"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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 := "hz-rp-test-01"
	requester := "25987322222222222"

	// 读取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 := "hz-rp-test-01"
	requester := "25987322222222222"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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 := "hz-rp-test-01"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	input := &oss.OperationInput{
		OpName: "ListBucketRequesterQoSInfos", // 操作名称
		Method: "GET",                         // HTTP方法类型
		Parameters: map[string]string{
			"requesterQosInfo": "", // 请求者QoS信息相关参数
			// 可选参数:
			// "continuation-token": "259873111111111111", // 用于分页获取结果的续传令牌
			// "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 := "hz-rp-test-01"
	requester := "203331xxxx0434633"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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": "hz-rp-01", // 用于分页获取结果的续传令牌
			// "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":     "hz-rp-01", // 需要查询信息的具体资源池名称
		},
		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": "hz-rp-01", // 资源池名称
		},
		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 := "hz-rp-01"
	requester := "25987333333333333"

	// 读取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 := "hz-rp-01"
	requester := "25987322222222222"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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 := "hz-rp-01"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	input := &oss.OperationInput{
		OpName: "ListResourcePoolRequesterQoSInfos", // 操作名称
		Method: "GET",                               // HTTP方法类型
		Parameters: map[string]string{
			"requesterQosInfo": "",           // 请求者QoS信息相关参数
			"resourcePool":     resourcePool, // 资源池名称
			// 可选参数:
			// "continuation-token": "259873111111111111", // 用于分页获取结果的续传令牌
			// "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 := "hz-rp-01"
	requester := "25987322222222222"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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": "test-group",           // 资源池存储空间组名称
			"resourcePool":            "resource-pool-for-ai", // 资源池名称
		},
		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": "hz-rp-01", // 资源池名称
		},
		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 := "hz-rp-01"
	group := "test-grp"

	// 读取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 := "hz-rp-01"
	ResourcePoolBucketGroup := "test-grp"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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 := "hz-rp-01"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	input := &oss.OperationInput{
		OpName: "ListResourcePoolBucketGroupQoSInfos", // 操作名称
		Method: "GET",                                 // HTTP方法类型
		Parameters: map[string]string{ // 参数列表
			"resourcePool": resourcePool, // 资源池名称
			// 可选参数:
			// "continuation-token": "259873111111111111", // 续传令牌,可用于分页获取结果
			// "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 := "hz-rp-01"
	group := "test-grp"

	// 创建操作输入参数,包括操作名称、方法类型、参数等
	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配置示例。

相关文章

资源池QoS管理 2025-04-21 18:14

本文介绍如何使用Go SDK V2管理配置资源池QoS。 注意事项 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问O

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号