All Products
Search
Document Center

Object Storage Service:Mengelola QoS kolam sumber daya (Go SDK V2)

Last Updated:Mar 21, 2026

Gunakan API InvokeOperation OSS Go SDK V2 untuk mengelola Quality of Service (QoS) pada kolam sumber daya. Halaman ini mencakup pembatasan bandwidth untuk bucket, requester, kolam sumber daya, kelompok bucket, serta konfigurasi QoS prioritas.

Semua contoh menggunakan client.InvokeOperation untuk mengirim panggilan API mentah. Setiap cuplikan merupakan fungsi package main mandiri yang dapat Anda sesuaikan dengan aplikasi Anda.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Akun Alibaba Cloud dengan akses OSS

  • Go SDK V2 terinstal: go get github.com/aliyun/alibabacloud-oss-go-sdk-v2

  • Variabel lingkungan berikut diatur dengan kredensial Anda:

    • OSS_ACCESS_KEY_ID

    • OSS_ACCESS_KEY_SECRET

  • File XML konfigurasi QoS (untuk operasi PUT)

Contoh-contoh berikut menggunakan wilayah cn-hangzhou dan titik akhir publik secara default. Untuk mengakses OSS dari produk Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir jaringan internal. Untuk pemetaan titik akhir berdasarkan wilayah, lihat Wilayah dan titik akhir.

Referensi operasi

Tabel berikut merangkum semua operasi yang dibahas dalam dokumen ini.

BagianOperasiFungsiMetode HTTP
Bandwidth bucketAtur pembatasan bandwidth bucketPutBucketQoSInfoPUT
Bucket BandwidthDapatkan Pembatasan kecepatan bucketGetBucketQoSInfoGET
Bucket bandwidthHapus pembatasan bandwidth bucketDeleteBucketQoSInfoDELETE
Requester (tingkat bucket)Mengatur pembatasan laju permintaanPutBucketRequesterQoSInfoPUT
Requester (tingkat bucket)Get requester throttlingGetBucketRequesterQoSInfoGET
Requester (tingkat bucket)Daftar semua konfigurasi pembatasan bandwidth requesterListBucketRequesterQoSInfosGET
Requester (tingkat bucket)Hapus pembatasan kecepatan permintaanDeleteBucketRequesterQoSInfoDELETE
Requester (tingkat kolam sumber daya)Daftar semua kolam sumber dayaListResourcePoolsGET
Requester (tingkat kolam sumber daya)Dapatkan informasi kolam sumber dayaGetResourcePoolInfoGET
Requester (tingkat kolam sumber daya)Daftar bucket dalam kolam sumber dayaListResourcePoolBucketGroupsGET
Requester (tingkat kolam sumber daya)Atur pembatasan kecepatan pemohonPutResourcePoolRequesterQoSInfoPUT
Requester (tingkat kolam sumber daya)Dapatkan pembatasan bandwidth requesterGetResourcePoolRequesterQoSInfoGET
Requester (tingkat kolam sumber daya)Daftar semua konfigurasi Pembatasan kecepatan pemintaListResourcePoolRequesterQoSInfosGET
Requester (tingkat kolam sumber daya)Hapus pembatasan kecepatan pengajuDeleteResourcePoolRequesterQoSInfoDELETE
QoS prioritasAtur QoS prioritas kolam sumber dayaPutResourcePoolPriorityQosConfigurationPUT
QoS prioritasDapatkan QoS prioritas kolam sumber dayaGetResourcePoolPriorityQosConfigurationGET
QoS prioritasHapus QoS prioritas kolam sumber dayaDeleteResourcePoolPriorityQosConfigurationDELETE
QoS prioritasAtur QoS prioritas requesterPutResourcePoolRequesterPriorityQosConfigurationPUT
QoS prioritasDapatkan QoS prioritas requesterGetResourcePoolRequesterPriorityQosConfigurationGET
QoS prioritasHapus QoS prioritas requesterDeleteResourcePoolRequesterPriorityQosConfigurationDELETE
Kelompok bucketTambahkan bucket ke kelompok bucketPutBucketResourcePoolBucketGroupPUT
Kelompok bucketDaftar kelompok bucketListResourcePoolBucketGroupsGET
Kelompok bucketAtur Pembatasan kecepatan kelompok bucketPutResourcePoolBucketGroupQosInfoPUT
Kelompok bucketDapatkan pembatasan bandwidth kelompok bucketGetResourcePoolBucketGroupQosInfoGET
Kelompok bucketDaftar semua konfigurasi pembatasan bandwidth kelompok bucketListResourcePoolBucketGroupQosInfosGET
Kelompok bucketHapus pembatasan bandwidth kelompok bucketDeleteResourcePoolBucketGroupQosInfoDELETE

Pengelolaan bandwidth bucket

Operasi ini mengonfigurasi, mengambil, dan menghapus pembatasan QoS untuk bucket tertentu dalam kolam sumber daya.

Atur pembatasan bandwidth untuk 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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	bucketName := "examplebucket"

	// Baca konfigurasi QoS dari file XML.
	qosConf, err := os.ReadFile("qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca qos.xml: %v\n", err)
		os.Exit(1)
	}

	// Hitung hash MD5 yang dikodekan Base64 dari badan permintaan untuk verifikasi integritas data.
	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",
		Parameters: map[string]string{
			"qosInfo": "",
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Dapatkan konfigurasi pembatasan bandwidth untuk 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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	bucketName := "examplebucket"

	input := &oss.OperationInput{
		OpName: "GetBucketQoSInfo",
		Method: "GET",
		Parameters: map[string]string{
			"qosInfo": "",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of GetBucketQoSInfo:", string(body))
}

Hapus konfigurasi pembatasan bandwidth untuk 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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	bucketName := "examplebucket"

	input := &oss.OperationInput{
		OpName: "DeleteBucketQoSInfo",
		Method: "DELETE",
		Parameters: map[string]string{
			"qosInfo": "",
		},
		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)
}

Pengelolaan bandwidth requester pada tingkat bucket

Operasi ini mengelola pembatasan QoS per-requester yang diterapkan pada bucket tertentu. Requester diidentifikasi berdasarkan ID akun Alibaba Cloud mereka.

Atur Pembatasan kecepatan untuk peminta

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() {
	var wilayah = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(wilayah)

	klien := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	requester := "2598733333333xxxx"

	qosConf, err := os.ReadFile("qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			"resourcePool":     resourcePool,
			"qosRequester":     requester,
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		Bucket: nil,
	}

	res, err := klien.InvokeOperation(context.TODO(), input)
	if err != nil {
		fmt.Printf("operasi invoke menghasilkan kesalahan: %v\n", err)
		os.Exit(1)
	}

	fmt.Println("Hasil dari PutResourcePoolRequesterQoSInfo:", res.Status)
}

Dapatkan konfigurasi pembatasan bandwidth untuk requester tertentu

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	bucketName := "examplebucket"

	input := &oss.OperationInput{
		OpName: "ListBucketRequesterQoSInfos",
		Method: "GET",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			// Parameter paging opsional:
			// "continuation-token": "25987311111111xxxx",
			// "max-keys":           "1",
		},
		Bucket: oss.Ptr(bucketName),
	}

	res, err := client.InvokeOperation(context.TODO(), input)
	if err != nil {
		fmt.Printf("pemanggilan operasi gagal: %v\n", err)
		os.Exit(1)
	}

	body, err := io.ReadAll(res.Body)
	if err != nil {
		fmt.Printf("gagal membaca badan respons: %v\n", err)
		os.Exit(1)
	}
	defer res.Body.Close()

	fmt.Println("Hasil dari ListBucketRequesterQoSInfos:", string(body))
}

Daftar konfigurasi pembatasan bandwidth untuk semua requester

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	bucketName := "examplebucket"

	input := &oss.OperationInput{
		OpName: "ListBucketRequesterQoSInfos",
		Method: "GET",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			// Parameter paging opsional:
			// "continuation-token": "25987311111111xxxx",
			// "max-keys":           "1",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of ListBucketRequesterQoSInfos:", string(body))
}

Hapus konfigurasi pembatasan bandwidth untuk requester

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	requester := "2598732222222xxxx"

	input := &oss.OperationInput{
		OpName: "DeleteResourcePoolRequesterQoSInfo",
		Method: "DELETE",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			"resourcePool":     resourcePool,
			"qosRequester":     requester,
		},
		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)
}

Pengelolaan bandwidth requester pada tingkat kolam sumber daya

Operasi ini mengelola pembatasan QoS untuk requester yang diterapkan pada kolam sumber daya, bukan bucket tertentu. Semua operasi tingkat kolam sumber daya menetapkan Bucket: nil.

Daftar semua kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	input := &oss.OperationInput{
		OpName: "ListResourcePools",
		Method: "GET",
		Parameters: map[string]string{
			"resourcePool": "",
			// Parameter paging opsional:
			// "continuation-token": "example-resource-pool",
			// "max-keys":           "1",
		},
		Bucket: nil, // Tidak terikat pada bucket tertentu
	}

	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)
	}
	defer res.Body.Close()

	fmt.Println("The result of ListResourcePools:", string(body))
}

Dapatkan informasi tentang kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	input := &oss.OperationInput{
		OpName: "GetResourcePoolInfo",
		Method: "GET",
		Parameters: map[string]string{
			"resourcePoolInfo": "",
			"resourcePool":     "example-resource-pool",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of GetResourcePoolInfo:", string(body))
}

Daftar bucket dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	input := &oss.OperationInput{
		OpName: "ListResourcePoolBucketGroups",
		Method: "GET",
		Parameters: map[string]string{
			"resourcePool": "example-resource-pool",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of ListResourcePoolBucketGroups:", string(body))
}

Atur pembatasan bandwidth untuk requester dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	requester := "2598733333333xxxx"

	qosConf, err := os.ReadFile("qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			"resourcePool":     resourcePool,
			"qosRequester":     requester,
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Dapatkan konfigurasi pembatasan bandwidth untuk requester tertentu dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	requester := "2598732222222xxxx"

	input := &oss.OperationInput{
		OpName: "GetResourcePoolRequesterQoSInfo",
		Method: "GET",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			"resourcePool":     resourcePool,
			"qosRequester":     requester,
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of GetResourcePoolRequesterQoSInfo:", string(body))
}

Daftar konfigurasi pembatasan bandwidth untuk semua requester dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"

	input := &oss.OperationInput{
		OpName: "ListResourcePoolRequesterQoSInfos",
		Method: "GET",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			"resourcePool":     resourcePool,
			// Parameter paging opsional:
			// "continuation-token": "25987311111111xxxx",
			// "max-keys":           "1",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of ListResourcePoolRequesterQoSInfos:", string(body))
}

Hapus konfigurasi Pembatasan kecepatan untuk peminta dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	requester := "2598732222222xxxx"

	input := &oss.OperationInput{
		OpName: "DeleteResourcePoolRequesterQoSInfo",
		Method: "DELETE",
		Parameters: map[string]string{
			"requesterQosInfo": "",
			"resourcePool":     resourcePool,
			"qosRequester":     requester,
		},
		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)
}

Pengelolaan QoS prioritas kolam sumber daya

QoS prioritas memungkinkan Anda menetapkan tingkat prioritas bandwidth untuk kolam sumber daya atau requester tertentu di dalamnya. Operasi PUT dan DELETE menyertakan badan permintaan dan header Content-MD5.

Atur QoS prioritas untuk kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "hz-rp-01"

	qosConf, err := os.ReadFile("priority-qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca priority-qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"priorityQos":  "",
			"resourcePool": resourcePool,
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Dapatkan konfigurasi QoS prioritas untuk kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "hz-rp-01"

	input := &oss.OperationInput{
		OpName: "GetResourcePoolPriorityQoSConfiguration",
		Method: "GET",
		Parameters: map[string]string{
			"priorityQos":  "",
			"resourcePool": resourcePool,
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of GetResourcePoolPriorityQosConfiguration:", string(body))
}

Hapus konfigurasi QoS prioritas untuk kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "hz-rp-01"

	qosConf, err := os.ReadFile("priority-qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca priority-qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"priorityQos":  "",
			"resourcePool": resourcePool,
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Atur QoS prioritas untuk requester dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "hz-rp-01"

	qosConf, err := os.ReadFile("requester-priority-qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca requester-priority-qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"requesterPriorityQos": "",
			"resourcePool":         resourcePool,
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Dapatkan konfigurasi QoS prioritas untuk requester dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "hz-rp-01"

	input := &oss.OperationInput{
		OpName: "GetResourcePoolRequesterPriorityQoSConfiguration",
		Method: "GET",
		Parameters: map[string]string{
			"requesterPriorityQos": "",
			"resourcePool":         resourcePool,
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of GetResourcePoolRequesterPriorityQosConfiguration:", string(body))
}

Hapus konfigurasi QoS prioritas untuk requester dalam kolam sumber daya

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() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "hz-rp-01"

	qosConf, err := os.ReadFile("priority-qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca priority-qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"requesterPriorityQos": "",
			"resourcePool":         resourcePool,
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Pengelolaan bandwidth kelompok bucket

Kelompok bucket adalah kumpulan bernama bucket dalam satu kolam sumber daya. Operasi ini memungkinkan Anda menetapkan bucket ke kelompok dan mengelola pembatasan QoS pada tingkat kelompok.

Tambahkan bucket ke kelompok bucket

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

func PutBucketResourcePoolBucketGroup() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	input := &oss.OperationInput{
		OpName: "PutBucketResourcePoolBucketGroup",
		Method: "PUT",
		Parameters: map[string]string{
			"resourcePoolBucketGroup": "example-group",
			"resourcePool":            "example-resource-pool",
		},
		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))
}

Daftar kelompok bucket dalam kolam sumber daya

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 ListResourcePoolBucketGroups() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	input := &oss.OperationInput{
		OpName: "ListResourcePoolBucketGroups",
		Method: "GET",
		Parameters: map[string]string{
			"resourcePool": "example-resource-pool",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of ListResourcePoolBucketGroups:", string(body))
}

Mengatur Pembatasan kecepatan untuk kelompok 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 PutResourcePoolBucketGroupQosInfo() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	group := "example-group"

	qosConf, err := os.ReadFile("qos.xml")
	if err != nil {
		fmt.Printf("gagal membaca qos.xml: %v\n", err)
		os.Exit(1)
	}

	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",
		Parameters: map[string]string{
			"resourcePool":                   resourcePool,
			"resourcePoolBucketGroup":        group,
			"resourcePoolBucketGroupQosInfo": "",
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf),
		},
		Body:   bytes.NewReader(qosConf),
		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)
}

Dapatkan konfigurasi pembatasan bandwidth untuk kelompok 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 GetResourcePoolBucketGroupQosInfo() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	resourcePoolBucketGroup := "example-group"

	input := &oss.OperationInput{
		OpName: "GetResourcePoolBucketGroupQoSInfo",
		Method: "GET",
		Parameters: map[string]string{
			"resourcePool":                   resourcePool,
			"resourcePoolBucketGroup":        resourcePoolBucketGroup,
			"resourcePoolBucketGroupQoSInfo": "",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of GetResourcePoolBucketGroupQoSInfo:", string(body))
}

Daftar konfigurasi pembatasan bandwidth untuk semua kelompok 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 ListResourcePoolBucketGroupQosInfos() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"

	input := &oss.OperationInput{
		OpName: "ListResourcePoolBucketGroupQoSInfos",
		Method: "GET",
		Parameters: map[string]string{
			"resourcePool": resourcePool,
			// Parameter paging opsional:
			// "continuation-token": "25987311111111xxxx",
			// "max-keys":           "1",
		},
		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)
	}
	defer res.Body.Close()

	fmt.Println("The result of ListResourcePoolBucketGroupQoSInfos:", string(body))
}

Hapus konfigurasi pembatasan bandwidth untuk kelompok 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 DeleteResourcePoolBucketGroupQosInfo() {
	var region = "cn-hangzhou"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	resourcePool := "example-resource-pool"
	group := "example-group"

	input := &oss.OperationInput{
		OpName: "DeleteResourcePoolBucketGroupQoSInfo",
		Method: "DELETE",
		Parameters: map[string]string{
			"resourcePool":                   resourcePool,
			"resourcePoolBucketGroup":        group,
			"resourcePoolBucketGroupQoSInfo": "",
		},
		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)
}

Langkah selanjutnya