Tous les produits
Search
Centre de documentation

Object Storage Service:Répertorier les buckets (SDK Go V2)

Dernière mise à jour :Sep 25, 2026

Cette rubrique explique comment répertorier les buckets répondant à des conditions spécifiées dans toutes les régions de votre compte.

Précautions

  • L'exemple de code de cette rubrique utilise l'ID de région Chine (Hangzhou) cn-hangzhou. Par défaut, le point de terminaison public est utilisé. Pour accéder à OSS depuis d'autres services Alibaba Cloud au sein de la même région, utilisez le point de terminaison interne. Pour plus d'informations sur les correspondances entre les régions et les points de terminaison OSS, consultez Régions et points de terminaison OSS.

  • Les exemples de cette rubrique montrent comment lire les identifiants d'accès à partir des variables d'environnement. Pour savoir comment configurer les identifiants d'accès, consultez Configurer les identifiants d'accès.

  • Pour répertorier les buckets, vous devez disposer de l'autorisation oss:ListBuckets. Pour plus d'informations, consultez Accorder des autorisations personnalisées à un utilisateur RAM.

  • Lorsque vous utilisez un SDK pour répertorier les buckets, vous pouvez spécifier un ID de groupe de ressources afin de filtrer les buckets appartenant à un groupe de ressources spécifique.

    • Par défaut, le paramètre d'ID de groupe de ressources n'est pas inclus lors de l'utilisation d'un SDK pour répertorier les buckets. Par conséquent, la réponse XML ne contient pas d'informations sur le groupe de ressources.

    • Si vous incluez le paramètre d'ID de groupe de ressources dans la requête, OSS renvoie tous les buckets appartenant à ce groupe de ressources.

    • Si vous n'incluez pas le paramètre d'ID de groupe de ressources dans la requête, OSS renvoie tous les buckets dont le demandeur est propriétaire.

Définition de la méthode

Opération API pour répertorier les buckets (Édition Premium)

Important
  • Pour les opérations de liste fréquentes, le SDK Go V2 fournit un paginateur prenant en charge la pagination automatique. Le paginateur récupère automatiquement les résultats des pages suivantes, ce qui vous permet de vous concentrer uniquement sur le code de traitement des résultats.

  • Un paginateur se compose d'un objet paginateur, <OperationName>Paginator, et d'une méthode de création de paginateur, New<OperationName>Paginator. La méthode de création renvoie un objet paginateur qui implémente les méthodes HasNext et NextPage. Utilisez ces méthodes pour déterminer s'il existe d'autres pages et appeler l'opération afin de récupérer la page suivante.

Le code suivant présente la définition de l'opération de listage des buckets :

type ListBucketsPaginator struct

func (c *Client) NewListBucketsPaginator(request *ListBucketsRequest, optFns ...func(*PaginatorOptions)) *ListBucketsPaginator

func (p *ListBucketsPaginator) HasNext() bool

func (p *ListBucketsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*<OperationName>Result, error)

Paramètres de requête

Paramètre

Type

Description

request

*ListBucketsRequest

Les paramètres de requête de l'opération. Pour plus d'informations, consultez ListBucketsRequest

optFns

...func(*PaginatorOptions)

(Facultatif) Les paramètres de configuration au niveau de l'opération. Pour plus d'informations, consultez PaginatorOptions

Valeurs de retour

Valeur de retour

Description

*ListBucketsPaginator

L'objet paginateur. Cet objet implémente les méthodes HasNext et NextPage, utilisées pour déterminer s'il existe d'autres pages et appeler l'opération afin de récupérer la page suivante.

Opération API pour répertorier les buckets (Édition de base)

func (c *Client) ListBuckets(ctx context.Context, request *ListBucketsRequest, optFns ...func(*Options)) (*ListBucketsResult, error)

Paramètres de requête

Paramètre

Type

Description

ctx

context.Context

Le contexte d'une requête. Utilisez ce paramètre pour définir le délai d'expiration d'une requête.

request

*ListBucketsRequest

Les paramètres de requête de l'opération. Pour plus d'informations, consultez ListBucketsRequest

optFns

...func(*Options)

(Facultatif) Les paramètres de configuration au niveau de l'opération. Pour plus d'informations, consultez Options

Valeurs de retour

Valeur de retour

Type

Description

result

*ListBucketsResult

La valeur de retour de l'opération. Ce paramètre n'est valide que si err est nul. Pour plus d'informations, consultez ListBucketsResult

err

error

L'état de la requête. Si la requête échoue, err n'est pas nul.

Exemple de code

Répertorier les buckets à l'aide de l'opération API de l'Édition Premium

Utilisez le code suivant pour répertorier tous les buckets dans toutes les régions de votre compte.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a request to list buckets
	request := &oss.ListBucketsRequest{}

	// Create a paginator
	p := client.NewListBucketsPaginator(request)

	var i int
	log.Println("Buckets:")

	// Traverse each page in the paginator
	for p.HasNext() {
		i++

		// Obtain the data of the next page
		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("failed to get page %v, %v", i, err)
		}

		// Print the information of each bucket on the page
		for _, b := range page.Buckets {
			log.Printf("Bucket: %v, StorageClass: %v, Location: %v\n", oss.ToString(b.Name), oss.ToString(b.StorageClass), oss.ToString(b.Location))
		}
	}

}

Répertorier les buckets à l'aide de l'opération API de l'Édition de base

Utilisez le code suivant pour répertorier tous les buckets dans toutes les régions de votre compte.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a ListBucketsRequest request
	request := &oss.ListBucketsRequest{}

	// List all buckets in all regions of the current account
	for {
		lsRes, err := client.ListBuckets(context.TODO(), request)
		if err != nil {
			log.Fatalf("Failed to list buckets: %v", err)
		}

		for _, bucket := range lsRes.Buckets {
			log.Printf("Bucket: %s", *bucket.Name)
		}

		if !lsRes.IsTruncated {
			break
		}
		request.Marker = lsRes.NextMarker
	}

	log.Println("List buckets successfully!")
}

Scénarios courants

Répertorier les buckets avec un préfixe spécifié

Utiliser un paginateur

Utilisez le code suivant pour répertorier les buckets dont les noms commencent par le préfixe example dans toutes les régions de votre compte.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a request to list buckets
	request := &oss.ListBucketsRequest{
		Prefix: oss.Ptr("example"), // Set the prefix to "example". Only buckets whose names start with this prefix are listed.
	}

	// Create a paginator
	p := client.NewListBucketsPaginator(request)

	var i int
	log.Println("Buckets:")

	// Traverse each page in the paginator
	for p.HasNext() {
		i++

		// Obtain the data of the next page
		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("failed to get page %v, %v", i, err)
		}

		// Print the information of each bucket on the page
		for _, b := range page.Buckets {
			log.Printf("Bucket: %v, StorageClass: %v, Location: %v\n", oss.ToString(b.Name), oss.ToString(b.StorageClass), oss.ToString(b.Location))
		}
	}
}

Utiliser ListBuckets

Utilisez le code suivant pour répertorier les buckets dont les noms commencent par le préfixe example dans toutes les régions de votre compte.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a ListBucketsRequest request
	request := &oss.ListBucketsRequest{
		Prefix:  oss.Ptr("example"),
	}

	// List all buckets in all regions of the current account
	for {
		lsRes, err := client.ListBuckets(context.TODO(), request)
		if err != nil {
			log.Fatalf("Failed to list buckets: %v", err)
		}

		for _, bucket := range lsRes.Buckets {
			log.Printf("Bucket: %s", *bucket.Name)
		}

		if !lsRes.IsTruncated {
			break
		}
		request.Marker = lsRes.NextMarker
	}

	log.Println("List buckets successfully!")
}

Répertorier les buckets situés après un marqueur spécifié

Utiliser un paginateur

Utilisez le code suivant pour répertorier les buckets dont les noms viennent alphabétiquement après example-bucket dans toutes les régions de votre compte.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a request to list buckets
	request := &oss.ListBucketsRequest{
		Marker: oss.Ptr("example-bucket"), // Set the marker to "example-bucket". The list operation starts from this marker.
	}

	// Create a paginator
	p := client.NewListBucketsPaginator(request)

	var i int
	log.Println("Buckets:")

	// Traverse each page in the paginator
	for p.HasNext() {
		i++

		// Obtain the data of the next page
		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("failed to get page %v, %v", i, err)
		}

		// Print the information of each bucket on the page
		for _, b := range page.Buckets {
			log.Printf("Bucket: %v, StorageClass: %v, Location: %v\n", oss.ToString(b.Name), oss.ToString(b.StorageClass), oss.ToString(b.Location))
		}
	}
}

Utiliser ListBuckets

Utilisez le code suivant pour répertorier les buckets dont les noms viennent alphabétiquement après example-bucket dans toutes les régions de votre compte.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	var marker string = "example-bucket"

	// Create a ListBucketsRequest request
	request := &oss.ListBucketsRequest{
		Marker: &marker,
	}

	// List all buckets in all regions of the current account
	for {
		lsRes, err := client.ListBuckets(context.TODO(), request)
		if err != nil {
			log.Fatalf("Failed to list buckets: %v", err)
		}

		for _, bucket := range lsRes.Buckets {
			log.Printf("Bucket: %s", *bucket.Name)
		}

		if !lsRes.IsTruncated {
			break
		}
		request.Marker = lsRes.NextMarker
	}

	log.Println("List buckets successfully!")
}

Répertorier un nombre spécifié de buckets

Utiliser un paginateur

Utilisez le code suivant pour répertorier les buckets dans toutes les régions de votre compte et spécifier le nombre maximal de buckets à renvoyer pour chaque page.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a request to list buckets
	request := &oss.ListBucketsRequest{
		MaxKeys: 5, // Set the number of buckets to return for each page to 5.
	}

	// Create a paginator
	p := client.NewListBucketsPaginator(request)

	var i int
	log.Println("Buckets:")

	// Traverse each page in the paginator
	for p.HasNext() {
		i++

		// Obtain the data of the next page
		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("failed to get page %v, %v", i, err)
		}

		// Print the information of each bucket on the page
		for _, b := range page.Buckets {
			log.Printf("Bucket: %v, StorageClass: %v, Location: %v\n", oss.ToString(b.Name), oss.ToString(b.StorageClass), oss.ToString(b.Location))
		}
	}

}

Utiliser ListBuckets

Utilisez le code suivant pour répertorier les buckets dans toutes les régions de votre compte et spécifier le nombre maximal de buckets à renvoyer pour chaque page.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a ListBucketsRequest request
	request := &oss.ListBucketsRequest{
		MaxKeys: 10, // The maximum number of buckets to return for each list operation.
	}

	// List all buckets in all regions of the current account
	for {
		lsRes, err := client.ListBuckets(context.TODO(), request)
		if err != nil {
			log.Fatalf("Failed to list buckets: %v", err)
		}

		for _, bucket := range lsRes.Buckets {
			log.Printf("Bucket: %s", *bucket.Name)
		}

		if !lsRes.IsTruncated {
			break
		}
		request.Marker = lsRes.NextMarker
	}

	log.Println("List buckets successfully!")
}

Répertorier tous les buckets d'un groupe de ressources spécifié

Utiliser un paginateur

  1. Si vous spécifiez l'ID de groupe de ressources ResourceGroupId dans les paramètres de requête, OSS renvoie tous les buckets appartenant à ce groupe de ressources.

  2. Si vous ne spécifiez pas l'ID de groupe de ressources ResourceGroupId dans les paramètres de requête, OSS renvoie tous les buckets dont le demandeur est propriétaire.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a request to list buckets
	request := &oss.ListBucketsRequest{
		ResourceGroupId: oss.Ptr("rg-aek27tc********"), // List buckets in the specified resource group.
	}

	// Create a paginator
	p := client.NewListBucketsPaginator(request)

	var i int
	log.Println("Buckets:")

	// Traverse each page in the paginator
	for p.HasNext() {
		i++

		// Obtain the data of the next page
		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("failed to get page %v, %v", i, err)
		}

		// Print the information of each bucket on the page
		for _, b := range page.Buckets {
			log.Printf("Bucket: %v, StorageClass: %v, Location: %v, ResourceGroupId: %v\n", oss.ToString(b.Name), oss.ToString(b.StorageClass), oss.ToString(b.Location), oss.ToString(b.ResourceGroupId))
		}
	}

}

Utiliser ListBuckets

  1. Si vous spécifiez l'ID de groupe de ressources ResourceGroupId dans les paramètres de requête, OSS renvoie tous les buckets appartenant à ce groupe de ressources.

  2. Si vous ne spécifiez pas l'ID de groupe de ressources ResourceGroupId dans les paramètres de requête, OSS renvoie tous les buckets dont le demandeur est propriétaire.

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

// Define global variables
var (
	region string // The region where the bucket is stored
)

// The init function is used to initialize command line parameters
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
}

func main() {
	// Parse command line parameters
	flag.Parse()

	// Check whether the region is empty
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and set the credential provider and region
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client
	client := oss.NewClient(cfg)

	// Create a ListBucketsRequest request
	request := &oss.ListBucketsRequest{
		MaxKeys:         10,
		ResourceGroupId: oss.Ptr("rg-aek27tc********"), // List buckets in the specified resource group.
	}

	// List all buckets in all regions of the current account
	for {
		lsRes, err := client.ListBuckets(context.TODO(), request)
		if err != nil {
			log.Fatalf("Failed to list buckets: %v", err)
		}

		for _, bucket := range lsRes.Buckets {
			log.Printf("Bucket: %s, StorageClass: %v, Location: %v, ResourceGroupId: %v\n", oss.ToString(bucket.Name), oss.ToString(bucket.StorageClass), oss.ToString(bucket.Location), oss.ToString(bucket.ResourceGroupId))
		}

		if !lsRes.IsTruncated {
			break
		}
		request.Marker = lsRes.NextMarker
	}

	log.Println("List buckets successfully!")
}

Références

  • Pour obtenir l'exemple de code complet permettant de répertorier les buckets, consultez Exemple GitHub.

  • Pour plus d'informations sur l'opération API de listage des buckets (Édition Premium), consultez NewListBucketsPaginator.

  • Pour plus d'informations sur l'opération API de listage des buckets (Édition de base), consultez ListBuckets.

  • Pour plus d'informations sur les paginateurs, consultez Guide du développeur.