OSS için Go SDK V1 kullanarak OSS'deki nesneler için erişim kontrol listelerini (ACL'ler) ayarlayabilir ve sorgulayabilirsiniz.
Notlar
Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'ye erişmek için bir iç uç nokta kullanın. OSS bölgeleri ve uç noktaları hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.
Bu konuda, erişim kimlik bilgileri ortam değişkenlerinden alınır. Erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma.
Bu konu, bir OSS uç noktası kullanarak bir OSSClient örneği oluşturmayı göstermektedir. Özel bir alan adı kullanmak veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulaması yapmak gibi alternatif yapılandırmalar için bkz. İstemciyi yapılandırma (Go SDK V1).
Bir nesne için ACL'yi yapılandırmak üzere
oss:PutObjectAcliznine sahip olmanız gerekir. Nesne ACL'lerini sorgulamak içinoss:GetObjectAcliznine sahip olmanız gerekir. Daha fazla bilgi için bkz. Özel ilke atama.
Okuma ve yazma izin türleri
Nesneler aşağıdaki dört ACL türünü destekler:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nesne ACL'leri, paket ACL'lerine göre önceliklidir. Örneğin, bir paket ACL'si özel olarak ayarlanmış ancak bir nesne ACL'si herkese açık-okuma-yazma olarak ayarlanmışsa, tüm kullanıcıların nesne üzerinde okuma ve yazma izinleri olur. Bir nesne için ACL yapılandırılmamışsa, nesne paket ACL'sini devralır.
Örnek kod
Aşağıdaki örnek kod, nesne ACL'lerinin nasıl ayarlanacağını ve sorgulanacağını gösterir:
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, set the Endpoint as needed.
// Set yourRegion to the region where the bucket is located. For example, for the China (Hangzhou) region, set the value to cn-hangzhou. For other regions, set the value as needed.
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"
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
}
// Set the ACL of the object.
// Set yourObjectName to the full path of the object. Do not include the bucket name.
objectName := "yourObjectName"
err = bucket.SetObjectACL(objectName, oss.ACLPublicReadWrite)
if err != nil {
log.Fatalf("Failed to set object ACL for '%s': %v", objectName, err)
}
// Get the ACL of the object.
aclRes, err := bucket.GetObjectACL(objectName)
if err != nil {
log.Fatalf("Failed to get object ACL for '%s': %v", objectName, err)
}
log.Printf("Object ACL for '%s': %s", objectName, aclRes.ACL)
}
İlgili kaynaklar
Tam örnek kod için bkz. GitHub örneği.
Nesne ACL'lerini ayarlama API işlemi hakkında daha fazla bilgi için bkz. SetObjectACL.
Nesne ACL'lerini sorgulama API işlemi hakkında daha fazla bilgi için bkz. GetObjectACL.