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-v2Variabel lingkungan berikut diatur dengan kredensial Anda:
OSS_ACCESS_KEY_IDOSS_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.
| Bagian | Operasi | Fungsi | Metode HTTP |
|---|---|---|---|
| Bandwidth bucket | Atur pembatasan bandwidth bucket | PutBucketQoSInfo | PUT |
| Bucket Bandwidth | Dapatkan Pembatasan kecepatan bucket | GetBucketQoSInfo | GET |
| Bucket bandwidth | Hapus pembatasan bandwidth bucket | DeleteBucketQoSInfo | DELETE |
| Requester (tingkat bucket) | Mengatur pembatasan laju permintaan | PutBucketRequesterQoSInfo | PUT |
| Requester (tingkat bucket) | Get requester throttling | GetBucketRequesterQoSInfo | GET |
| Requester (tingkat bucket) | Daftar semua konfigurasi pembatasan bandwidth requester | ListBucketRequesterQoSInfos | GET |
| Requester (tingkat bucket) | Hapus pembatasan kecepatan permintaan | DeleteBucketRequesterQoSInfo | DELETE |
| Requester (tingkat kolam sumber daya) | Daftar semua kolam sumber daya | ListResourcePools | GET |
| Requester (tingkat kolam sumber daya) | Dapatkan informasi kolam sumber daya | GetResourcePoolInfo | GET |
| Requester (tingkat kolam sumber daya) | Daftar bucket dalam kolam sumber daya | ListResourcePoolBucketGroups | GET |
| Requester (tingkat kolam sumber daya) | Atur pembatasan kecepatan pemohon | PutResourcePoolRequesterQoSInfo | PUT |
| Requester (tingkat kolam sumber daya) | Dapatkan pembatasan bandwidth requester | GetResourcePoolRequesterQoSInfo | GET |
| Requester (tingkat kolam sumber daya) | Daftar semua konfigurasi Pembatasan kecepatan peminta | ListResourcePoolRequesterQoSInfos | GET |
| Requester (tingkat kolam sumber daya) | Hapus pembatasan kecepatan pengaju | DeleteResourcePoolRequesterQoSInfo | DELETE |
| QoS prioritas | Atur QoS prioritas kolam sumber daya | PutResourcePoolPriorityQosConfiguration | PUT |
| QoS prioritas | Dapatkan QoS prioritas kolam sumber daya | GetResourcePoolPriorityQosConfiguration | GET |
| QoS prioritas | Hapus QoS prioritas kolam sumber daya | DeleteResourcePoolPriorityQosConfiguration | DELETE |
| QoS prioritas | Atur QoS prioritas requester | PutResourcePoolRequesterPriorityQosConfiguration | PUT |
| QoS prioritas | Dapatkan QoS prioritas requester | GetResourcePoolRequesterPriorityQosConfiguration | GET |
| QoS prioritas | Hapus QoS prioritas requester | DeleteResourcePoolRequesterPriorityQosConfiguration | DELETE |
| Kelompok bucket | Tambahkan bucket ke kelompok bucket | PutBucketResourcePoolBucketGroup | PUT |
| Kelompok bucket | Daftar kelompok bucket | ListResourcePoolBucketGroups | GET |
| Kelompok bucket | Atur Pembatasan kecepatan kelompok bucket | PutResourcePoolBucketGroupQosInfo | PUT |
| Kelompok bucket | Dapatkan pembatasan bandwidth kelompok bucket | GetResourcePoolBucketGroupQosInfo | GET |
| Kelompok bucket | Daftar semua konfigurasi pembatasan bandwidth kelompok bucket | ListResourcePoolBucketGroupQosInfos | GET |
| Kelompok bucket | Hapus pembatasan bandwidth kelompok bucket | DeleteResourcePoolBucketGroupQosInfo | DELETE |
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
Untuk referensi API lengkap mengenai operasi QoS kolam sumber daya, lihat Operasi QoS kolam sumber daya.
Untuk contoh konfigurasi termasuk struktur XML sampel, lihat Contoh konfigurasi QoS kolam sumber daya.