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 ACL de um bucket.
Notas de uso
O código de exemplo deste tópico usa o ID de região
cn-hangzhouda região China (Hangzhou). Por padrão, o SDK 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 obter mais informações sobre as regiões e os endpoints compatíveis com o OSS, consulte OSS regions and endpoints.Este tópico fornece um exemplo de como usar credenciais de acesso obtidas de variáveis de ambiente. Para obter mais informações sobre como configurar credenciais de acesso, consulte Configure access credentials.
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 obter mais informações, consulte Grant custom policy to RAM users.
Tipos de ACLs
Há três tipos de ACL disponíveis para buckets:
|
ACL |
Descrição |
Método |
|
Private |
Apenas o proprietário ou os usuários autorizados deste bucket podem ler e gravar os objetos. Outros usuários não podem acessar os objetos no bucket. |
oss.BucketACLPrivate |
|
Public-read |
Apenas o proprietário ou os usuários autorizados deste bucket podem ler e gravar os objetos. Outros usuários, incluindo usuários anônimos, podem apenas ler os objetos no bucket. Tenha cuidado ao configurar este valor de ACL. |
oss.BucketACLPublicRead |
|
Public-read-write |
Qualquer usuário, incluindo usuários anônimos, pode ler e gravar os objetos. Tenha cuidado ao configurar este valor de ACL. |
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 obter o código de exemplo completo para definir a ACL de um bucket, consulte o exemplo no GitHub.
Para mais informações sobre a operação de API para definir a ACL de um bucket, consulte PutBucketAcl.
Para acessar o código de exemplo completo para recuperar a ACL de um bucket, consulte o exemplo no GitHub.
Para detalhes sobre a operação de API para recuperar a ACL de um bucket, consulte GetBucketACL.