Tüm Ürünler
Search
Belge Merkezi

:OSS SDK for Go 2.0 kullanarak paket ilkelerini yapılandırma

Son Güncelleme:Oct 01, 2026

Paket ilkeleri; Alibaba Cloud hesapları, RAM kullanıcıları ve RAM rolleri gibi anonim veya kimliği doğrulanmış kullanıcıların belirli Object Storage Service (OSS) kaynaklarına erişimini sağlar veya kısıtlar. Örneğin, başka bir Alibaba Cloud hesabındaki bir RAM kullanıcısına belirli OSS kaynaklarında salt okunur izinler verebilirsiniz.

Notlar

  • Paket ilkelerini yapılandırmadan önce bu özelliği inceleyin. Daha fazla bilgi için bkz. Bucket Policy.

  • Bu konudaki örnek kod, Çin (Hangzhou) bölgesinin bölge kimliği olan cn-hangzhou değerini kullanır. Varsayılan olarak genel uç nokta kullanılır. Aynı bölgedeki diğer Alibaba Cloud hizmetlerinden bir paketteki kaynaklara erişmek için dahili uç nokta kullanın. OSS bölgeleri ve uç noktaları hakkında daha fazla bilgi için bkz. OSS regions and endpoints.

  • Bu konuda erişim kimlik bilgileri ortam değişkenlerinden alınır. Daha fazla bilgi için bkz. Configure access credentials.

  • Bir paket ilkesini yapılandırmak için oss:PutBucketPolicy izni gerekir. Bir paket ilkesini sorgulamak için oss:GetBucketPolicy izni gerekir. Bir paket ilkesini silmek için oss:DeleteBucketPolicy izni gerekir. Daha fazla bilgi için bkz. Authorize custom policies for RAM users.

Örnek kod

Paket ilkesini yapılandırma

Aşağıdaki örnek kod bir paket ilkesini yapılandırır.

package main

import (
	"context"
	"flag"
	"log"
	"strings"

	"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 // Region in which the bucket is located.
	bucketName string // Name of the bucket.
)

// Specify the init function 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 name of the bucket is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Define the bucket policy.
	policy := `{
		"Version": "1",
		"Statement": [
			{
				"Action": [
					"oss:PutObject",
					"oss:GetObject"
				],
				"Effect": "Deny",
				"Principal": ["1234567890"],
				"Resource": ["acs:oss:*:1234567890:*/*"]
			}
		]
	}`

	// Create a request to configure a bucket policy.
	request := &oss.PutBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),       // Name of the bucket.
		Body:   strings.NewReader(policy), // The bucket policy.
	}

	// Perform the operation to configure the bucket policy.
	result, err := client.PutBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to put bucket policy %v", err)
	}

	// Display the result.
	log.Printf("put bucket policy result:%#v\n", result)
}

Paket ilkesini sorgulama

Aşağıdaki örnek kod bir paket ilkesini sorgular.

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 // Region in which the bucket is located.
	bucketName string // Name of the bucket.
)

// Specify the init function 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 name of the bucket is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify 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 query the bucket policy.
	request := &oss.GetBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Make the query request.
	result, err := client.GetBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to get bucket policy %v", err)
	}

	// Display the result.
	log.Printf("get bucket policy result:%#v\n", result)
}

Paket ilkesini silme

Aşağıdaki örnek kod bir paket ilkesini siler.

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 // Region in which the bucket is located.
	bucketName string // Name of the bucket.
)

// Specify the init function 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 name of the bucket is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify 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 delete the bucket policy.
	request := &oss.DeleteBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Delete the bucket policy.
	result, err := client.DeleteBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to delete bucket policy %v", err)
	}

	// Display the result.
	log.Printf("delete bucket policy result:%#v\n", result)
}

İlgili Başlıklar

  • Bir paket ilkesini yapılandırmaya ilişkin eksiksiz örnek kod için GitHub example adresini ziyaret edin.

  • Bir paket ilkesini yapılandırmak için kullanılan API işlemi hakkında bilgi edinmek üzere PutBucketPolicy başlığına bakın.

  • Bir paket ilkesini sorgulamaya ilişkin eksiksiz örnek kod için GitHub example adresini ziyaret edin.

  • Bir paket ilkesini sorgulamak için kullanılan API işlemi hakkında bilgi edinmek üzere GetBucketPolicy başlığına bakın.

  • Bir paket ilkesini silmeye ilişkin eksiksiz örnek kod için GitHub example adresini ziyaret edin.

  • Bir paket ilkesini silmek için kullanılan API işlemi hakkında bilgi edinmek üzere DeleteBucketPolicy başlığına bakın.