All Products
Search
Document Center

Object Storage Service:Configure resource groups using OSS SDK for Go 2.0

Last Updated:Mar 20, 2026

Use PutBucketResourceGroup to assign a bucket to a resource group, and GetBucketResourceGroup to retrieve the resource group ID of a bucket.

Prerequisites

Before you begin, make sure you have:

Usage notes

  • The sample code uses the cn-hangzhou region and connects via the public endpoint. To access OSS from another Alibaba Cloud service in the same region, use the internal endpoint instead. See Regions and endpoints.

  • If you don't specify a resource group ID when calling PutBucketResourceGroup, the bucket is assigned to the default resource group.

Assign a resource group to a bucket

func (c *Client) PutBucketResourceGroup(ctx context.Context, request *PutBucketResourceGroupRequest, optFns ...func(*Options)) (*PutBucketResourceGroupResult, error)

Related operation: Get the resource group ID of a bucket

Parameters

ParameterTypeDescription
ctxcontext.ContextRequest context. Use this to set a total timeout for the request.
request*PutBucketResourceGroupRequestRequest parameters. The ResourceGroupId field is optional — if left blank, the bucket is assigned to the default resource group. See PutBucketResourceGroupRequest.
optFns...func(*Options)Optional operation-level configuration. See Options.

Return values

Return valueTypeDescription
result*PutBucketResourceGroupResultOperation result. Valid when err is nil. See PutBucketResourceGroupResult.
errerrornil on success; non-nil if the request fails.

Example

The following example assigns a bucket to a specific resource group.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region where the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The bucket name.")
}

func main() {
	flag.Parse()

	// Replace with your resource group ID.
	// If left blank, the bucket is assigned to the default resource group.
	var groupId string = "rg-aekz****"

	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load credentials from environment variables and set the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	request := &oss.PutBucketResourceGroupRequest{
		Bucket: oss.Ptr(bucketName),
		BucketResourceGroupConfiguration: &oss.BucketResourceGroupConfiguration{
			ResourceGroupId: oss.Ptr(groupId),
		},
	}

	result, err := client.PutBucketResourceGroup(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to put bucket resource group %v", err)
	}

	log.Printf("put bucket resource group result:%#v\n", result)
}

For the complete sample, see put_bucket_resource_group.go on GitHub.

Get the resource group ID of a bucket

func (c *Client) GetBucketResourceGroup(ctx context.Context, request *GetBucketResourceGroupRequest, optFns ...func(*Options)) (*GetBucketResourceGroupResult, error)

Related operation: Assign a resource group to a bucket

Parameters

ParameterTypeDescription
ctxcontext.ContextRequest context. Use this to set a total timeout for the request.
request*GetBucketResourceGroupRequestRequest parameters. See GetBucketResourceGroupRequest.
optFns...func(*Options)Optional operation-level configuration. See Options.

Return values

Return valueTypeDescription
result*GetBucketResourceGroupResultOperation result. Valid when err is nil. Access the resource group ID via result.BucketResourceGroupConfiguration.ResourceGroupId. See GetBucketResourceGroupResult.
errerrornil on success; non-nil if the request fails.

Example

The following example retrieves the resource group ID of a bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region where the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The bucket name.")
}

func main() {
	flag.Parse()

	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load credentials from environment variables and set the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	request := &oss.GetBucketResourceGroupRequest{
		Bucket: oss.Ptr(bucketName),
	}

	result, err := client.GetBucketResourceGroup(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to get bucket resource group %v", err)
	}

	log.Printf("get bucket resource group id:%#v\n", *result.BucketResourceGroupConfiguration.ResourceGroupId)
}

For the complete sample, see get_bucket_resource_group.go on GitHub.

What's next