すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:リソースプールの QoS の管理 (Go SDK V2)

最終更新日:Nov 12, 2025

このトピックでは、Go SDK V2 を使用してリソースプールのサービス品質 (QoS) を管理および設定する方法について説明します。

注意事項

  • このトピックのサンプルコードでは、中国 (杭州) リージョン ID cn-hangzhou を例として使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud プロダクトから OSS にアクセスする場合は、内部ネットワークエンドポイントを使用します。OSS がサポートするリージョンとエンドポイント間のマッピングの詳細については、「リージョンとエンドポイント」をご参照ください。

バケット帯域幅管理

リソースプール内のバケットのスロットリングを設定する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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), // リクエストボディの Content-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)
}

バケットのスロットリング設定を取得する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

リソースプール内の特定のバケットのスロットリング設定を削除する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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)
}

バケットレベルでの異なるリクエスタの帯域幅管理

バケットレベルでリクエスタのスロットリングを設定する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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), // リクエストボディの Content-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)
}

バケットレベルで特定のリクエスタのスロットリング設定を取得する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

バケットレベルですべてのリクエスタのスロットリング設定を取得する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

バケットのリクエスタのスロットリング設定を削除する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

特定のリソースプール内のバケットのリストを取得する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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), // リクエストボディの Content-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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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)
}

リソースプールの優先度 QoS 管理

リソースプールの優先度 QoS 設定を行う

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 PutResourcePoolPriorityQosConfiguration() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを cn-hangzhou に設定します。
	var region = "cn-hangzhou"

	// デフォルト設定をロードし、認証情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// リソースプール名を定義します。
	resourcePool := "hz-rp-01"

	// 優先度 QoS 設定ファイルの内容を読み取ります。
	qosConf, err := os.ReadFile("priority-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: "PutResourcePoolPriorityQoSConfiguration", // 操作
		Method: "PUT",                                     // HTTP メソッド
		Parameters: map[string]string{
			"priorityQos":  "",           // 優先度 QoS 関連のパラメーター。
			"resourcePool": resourcePool, // リソースプール名
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf), // リクエストボディの Content-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 PutResourcePoolPriorityQoSConfiguration:", res.Status)
}

リソースプールの優先度 QoS 設定を取得する

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 GetResourcePoolPriorityQosConfiguration() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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: "GetResourcePoolPriorityQoSConfiguration", // 操作
		Method: "GET",                                     // HTTP メソッド
		Parameters: map[string]string{
			"priorityQos":  "",           // 優先度 QoS 関連のパラメーター。
			"resourcePool": resourcePool, // リソースプール名
		},
		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 GetResourcePoolPriorityQosConfiguration:", string(body))
}

リソースプールの優先度 QoS 設定を削除する

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 DeleteResourcePoolPriorityQosConfiguration() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを cn-hangzhou に設定します。
	var region = "cn-hangzhou"

	// デフォルト設定をロードし、認証情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// リソースプール名を定義します。
	resourcePool := "hz-rp-01"

	// 優先度 QoS 設定ファイルの内容を読み取ります。
	qosConf, err := os.ReadFile("priority-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: "DeleteResourcePoolPriorityQosConfiguration", // 操作
		Method: "DELETE",                                     // HTTP メソッド
		Parameters: map[string]string{
			"priorityQos":  "",           // 優先度 QoS 関連のパラメーター。
			"resourcePool": resourcePool, // リソースプール名
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf), // リクエストボディの Content-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 DeleteResourcePoolPriorityQosConfiguration:", res.Status)
}

リソースプール内のリクエスタの優先度 QoS 設定を行う

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 PutResourcePoolRequesterPriorityQosConfiguration() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを cn-hangzhou に設定します。
	var region = "cn-hangzhou"

	// デフォルト設定をロードし、認証情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// リソースプール名を定義します。
	resourcePool := "hz-rp-01"

	// リクエスタ優先度 QoS 設定ファイルの内容を読み取ります。
	qosConf, err := os.ReadFile("requester-priority-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: "PutResourcePoolRequesterPriorityQoSConfiguration", // 操作
		Method: "PUT",                                              // HTTP メソッド
		Parameters: map[string]string{
			"requesterPriorityQos": "", // リクエスタ優先度 QoS 関連のパラメーター。
			"resourcePool":         resourcePool, // リソースプール名
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf), // リクエストボディの Content-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 PutResourcePoolRequesterPriorityQoSConfiguration:", res.Status)
}

リソースプール内のリクエスタの優先度 QoS 設定を取得する

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 GetResourcePoolRequesterPriorityQosConfiguration() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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: "GetResourcePoolRequesterPriorityQoSConfiguration", // 操作
		Method: "GET",                                              // HTTP メソッド
		Parameters: map[string]string{
			"requesterPriorityQos": "", // リクエスタ優先度 QoS 関連のパラメーター。
			"resourcePool":         resourcePool, // リソースプール名
		},
		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 GetResourcePoolRequesterPriorityQosConfiguration:", string(body))
}

リソースプール内のリクエスタの優先度 QoS 設定を削除する

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 DeleteResourcePoolRequesterPriorityQosConfiguration() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを cn-hangzhou に設定します。
	var region = "cn-hangzhou"

	// デフォルト設定をロードし、認証情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// リソースプール名を定義します。
	resourcePool := "hz-rp-01"

	// リクエスタ優先度 QoS 設定ファイルの内容を読み取ります。
	qosConf, err := os.ReadFile("priority-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: "DeleteResourcePoolRequesterPriorityQoSConfiguration", // 操作
		Method: "DELETE",                                              // HTTP メソッド
		Parameters: map[string]string{
			"requesterPriorityQos": "", // リクエスタ優先度 QoS 関連のパラメーター。
			"resourcePool":         resourcePool, // リソースプール名
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf), // リクエストボディの Content-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 DeleteResourcePoolRequesterPriorityQosConfiguration:", res.Status)
}

バケットグループの帯域幅管理

リソースプールから特定のバケットグループにバケットを追加する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

特定のリソースプール内のバケットグループのリストを取得する

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))
}

リソースプール内のバケットグループのスロットリング設定を変更する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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), // リクエストボディの Content-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)
}

リソースプール内のバケットグループのスロットリング設定を取得する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

リソースプール内のバケットグループの調整設定を一覧表示する

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() {
	// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合はリージョンを 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))
}

リソースプール内のバケットグループのスロットリング設定を削除する

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)
}

参照