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ãooss: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(®ion, "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.