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)
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(®ion, "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(®ion, "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(®ion, "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(®ion, "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(®ion, "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(®ion, "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(®ion, "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(®ion, "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
Si vous spécifiez l'ID de groupe de ressources
ResourceGroupIddans les paramètres de requête, OSS renvoie tous les buckets appartenant à ce groupe de ressources.Si vous ne spécifiez pas l'ID de groupe de ressources
ResourceGroupIddans 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(®ion, "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
Si vous spécifiez l'ID de groupe de ressources
ResourceGroupIddans les paramètres de requête, OSS renvoie tous les buckets appartenant à ce groupe de ressources.Si vous ne spécifiez pas l'ID de groupe de ressources
ResourceGroupIddans 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(®ion, "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.