defina e obtenha as ACLs de buckets para controlar as permissões de leitura e gravação dos objetos em um bucket.
Observações
Este tópico utiliza o endpoint público da região china (Hangzhou). Se precisar acessar o oss a partir de outros service da Alibaba Cloud na mesma região, use um endpoint interno. Para mais informações sobre regiões e endpoints do oss, consulte Regions and endpoints.
Este tópico utiliza credenciais de acesso obtidas de variáveis de ambiente. Para mais informações sobre como configure credenciais de acesso, consulte Configure access credentials.
Este tópico demonstra como crie uma instância OSSClient com um endpoint do oss. Para configurações alternativas, como usar um domínio personalizado ou autenticar com credenciais do Security Token Service (STS), consulte Configure a client (Go SDK V1).
Para definir a ACL de um bucket, é necessária a permissão
oss:PutBucketAcl. Para obter a ACL de um bucket, é necessária a permissãooss:GetBucketAcl. Para mais informações, consulte Grant a custom policy.
Tipos de ACL de bucket
O oss suporta as seguintes ACLs de bucket.
|
ACL |
Descrição |
Método |
|
Private |
Apenas o proprietário do bucket e usuários autorizados têm permissões de leitura e gravação nos objetos do bucket. Outros usuários não têm permissões. |
oss.ACLPrivate |
|
Public-read |
O proprietário do bucket e usuários autorizados têm permissões de leitura e gravação nos objetos do bucket. Outros usuários têm apenas permissões de leitura. Use esta permissão com cautela. |
oss.ACLPublicRead |
|
Public-read-write |
Todos os usuários têm permissões de leitura e gravação nos objetos do bucket. Use esta permissão com cautela. |
oss.ACLPublicReadWrite |
Código de exemplo
Para definir e obter a ACL de um bucket, execute o código abaixo:
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Failed to create credentials provider: %v", err)
}
// Create an OSSClient instance.
// Set yourEndpoint to the endpoint of the bucket. For example, for the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint.
// Set yourRegion to the region where the bucket is located. For example, for the China (Hangzhou) region, set the region to cn-hangzhou. For other regions, use the actual region.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Set the signature version.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Failed to create OSS client: %v", err)
}
// Set yourBucketName to the name of the bucket.
bucketName := "yourBucketName"
// Set the bucket ACL to public-read.
err = client.SetBucketACL(bucketName, oss.ACLPublicRead)
if err != nil {
log.Fatalf("Failed to set bucket ACL for '%s': %v", bucketName, err)
}
// Get the bucket ACL.
aclRes, err := client.GetBucketACL(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket ACL for '%s': %v", bucketName, err)
}
log.Printf("Bucket ACL for '%s': %s", bucketName, aclRes.ACL)
}
Referências
Para acessar o código de exemplo completo sobre ACLs de bucket, consulte Exemplo no GitHub.
Para mais detalhes sobre a operação de API utilizada para definir ACLs de bucket, consulte SetBucketACL.
Para mais detalhes sobre a operação de API utilizada para obter ACLs de bucket, consulte GetBucketACL.