Todos os produtos
Search
Central de documentação

Object Storage Service:Gerencie ACLs de buckets (Go SDK V2)

Última atualização: Jul 03, 2026

Um bucket é um contêiner para armazenar objetos no Object Storage Service (OSS). Este tópico descreve como usar o Go SDK V2 para definir e obter a lista de controle de acesso (ACL) de um bucket.

Observações de uso

  • Os códigos de exemplo deste tópico usam o ID da região cn-hangzhou, referente à região China (Hangzhou). Por padrão, o sistema usa um endpoint público. Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para mais informações sobre as regiões e os endpoints compatíveis com o OSS, consulte Regiões e endpoints do OSS.

  • Este tópico fornece um exemplo de uso de credenciais de acesso obtidas de variáveis de ambiente. Para saber mais sobre como configurar credenciais de acesso, consulte Configurar credenciais de acesso.

  • Para definir a ACL de um bucket, você precisa da permissão oss:PutBucketAcl. Para obter a ACL de um bucket, você precisa da permissão oss:GetBucketAcl. Para mais informações, consulte Conceder política personalizada a usuários RAM.

Tipos de ACLs

Os buckets oferecem suporte aos três tipos de ACL a seguir:

ACL

Descrição

Método

Private

Somente o proprietário ou usuários autorizados deste bucket podem ler e gravar objetos. Outros usuários não têm acesso aos objetos no bucket.

oss.BucketACLPrivate

Public-read

Somente o proprietário ou usuários autorizados deste bucket podem ler e gravar objetos. Outros usuários, incluindo anônimos, podem apenas ler os objetos no bucket. Tenha cuidado ao definir a ACL com este valor.

oss.BucketACLPublicRead

Public-read-write

Qualquer usuário, inclusive anônimos, pode ler e gravar objetos. Tenha cuidado ao definir a ACL com este valor.

oss.BucketACLPublicReadWrite

Código de exemplo

Use o código a seguir para definir e obter a ACL de um 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"
)

// Define global variables.
var (
	region     string // The storage region.
	bucketName string // The bucket name.
)

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

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

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

	// 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 set the bucket ACL.
	putRequest := &oss.PutBucketAclRequest{
		Bucket: oss.Ptr(bucketName),  // The bucket name.
		Acl:    oss.BucketACLPrivate, // Set the access permission to private.
	}

	// Execute the operation to set the bucket ACL.
	putResult, err := client.PutBucketAcl(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("failed to put bucket acl %v", err)
	}

	// Print the result of setting the bucket ACL.
	log.Printf("put bucket acl result: %#v\n", putResult)

	// Create a request to get the bucket ACL.
	getRequest := &oss.GetBucketAclRequest{
		Bucket: oss.Ptr(bucketName), // The bucket name.
	}

	// Execute the operation to get the bucket ACL.
	getResult, err := client.GetBucketAcl(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("failed to get bucket acl %v", err)
	}

	// Print the result of getting the bucket ACL.
	log.Printf("get bucket acl result:%#v\n", getResult)
}

Referências

  • Para ver o código de exemplo completo sobre como definir a ACL de um bucket, consulte o exemplo no GitHub.

  • Para mais informações sobre a operação de API usada para definir a ACL de um bucket, consulte PutBucketAcl.

  • Para ver o código de exemplo completo sobre como obter a ACL de um bucket, consulte o exemplo no GitHub.

  • Para mais informações sobre a operação de API usada para obter a ACL de um bucket, consulte GetBucketACL.