Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Manage object metadata (OSS SDK for Go 1.0)

Son Güncelleme:Oct 01, 2026

Object Storage Service (OSS) içinde depolanan nesneler; anahtarlardan, verilerden ve nesne meta verilerinden oluşur. Nesne meta verileri nesneyi tanımlar. Bu meta veriler standart HTTP üst bilgilerini ve kullanıcı meta verilerini içerir. Standart HTTP üst bilgilerini yapılandırarak nesne önbelleğe alma ilkeleri veya zorunlu nesne indirme ilkeleri gibi özel HTTP istek ilkeleri oluşturabilirsiniz. Bir nesnenin amaçlarını veya niteliklerini belirlemek için o nesneye kullanıcı meta verisi ekleyebilirsiniz.

Notlar

  • Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'e erişmek için dahili 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ınmaktadır. Erişim kimlik bilgilerini yapılandırma hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırın.

  • Bu konu, bir OSS uç noktası kullanarak bir OSSClient örneği oluşturmayı göstermektedir. Özel etki alanı kullanma veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulama gibi alternatif yapılandırmalar için bkz. İstemciyi yapılandırın (Go SDK V1).

  • Nesne meta verilerini yapılandırmak için oss:PutObject iznine sahip olmanız gerekir. Nesne meta verilerini sorgulamak için oss:GetObject iznine sahip olmanız gerekir. Daha fazla bilgi için bkz. Özel ilke atayın.

Örnek kod

Bir nesne yüklerken nesne meta verilerini yapılandırın

Uyarı

Nesneleri OSS'e yüklediğinizde, OSS'te zaten bulunan bir nesne ile yüklenen nesnenin adı aynıysa OSS mevcut nesneyi yüklenen nesneyle değiştirir. Bir nesne yükleyerek nesne meta verilerini yapılandırmadan önce, hedef paket içinde aynı ada sahip bir nesne bulunmadığından emin olun. Böylece mevcut nesnelerin yanlışlıkla üzerine yazılmasını önlersiniz. Aynı ada sahip nesnelerin üzerine yazılmasını engelleme hakkında daha fazla bilgi için bkz. Aynı ada sahip nesnelerin üzerine yazılmasını engelleyin.

package main

import (
	"log"
	"strings"
	"time"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain access credentials from environment variables. Before you run the code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Create an OSSClient instance. 
	// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint. 
	// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.Specify the actual region. 
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Specify the version of the signature algorithm.
	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)
	}

	// Specify the bucket name. Example: examplebucket. 
	bucketName := "examplebucket" // Replace this parameter with the actual name of your bucket.
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket: %v", err)
	}

	// Configure object metadata. Set the expiration time to 23:00:00 January 10, 2049 in GMT, access control list (ACL) to public-read, and MyProp to MyPropVal as user metadata.
	expires := time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
	options := []oss.Option{
		oss.Expires(expires),
		oss.ObjectACL(oss.ACLPublicRead),
		oss.Meta("MyProp", "MyPropVal"),
	}

	// Use a data stream to upload the object. 
	// Specify the full path of the object. The full path of the object cannot contain the bucket name. Example: exampledir/exampleobject.txt. 
	objectName := "exampledir/exampleobject.txt" // Replace this parameter with the actual path of the object.
	err = bucket.PutObject(objectName, strings.NewReader("MyObjectValue"), options...)
	if err != nil {
		log.Fatalf("Failed to upload object: %v", err)
	}

	// Query object metadata. 
	props, err := bucket.GetObjectDetailedMeta(objectName)
	if err != nil {
		log.Fatalf("Failed to get object detailed metadata: %v", err)
	}
	log.Printf("Object Meta: %+v\n", props)
}

Nesne meta verilerini değiştirin

...

// Modify one object metadata parameter at a time. 
err = bucket.SetObjectMeta(objectName, oss.Meta("MyMeta", "MyMetaValue1"))
if err != nil {
	log.Fatalf("Failed to set single metadata: %v", err)
}

// Modify multiple object metadata parameters at a time. 
options := []oss.Option{
	oss.Meta("MyMeta", "MyMetaValue2"),
	oss.Meta("MyObjectLocation", "HangZhou"),
}
err = bucket.SetObjectMeta(objectName, options...)
if err != nil {
	log.Fatalf("Failed to set multiple metadatas: %v", err)
}

// Query object metadata. 
props, err := bucket.GetObjectDetailedMeta(objectName)
if err != nil {
	log.Fatalf("Failed to get object detailed metadata: %v", err)
}
log.Printf("Object Meta: %+v\n", props)

Nesne meta verilerini sorgulayın

...

// Query object metadata. 
props, err := bucket.GetObjectDetailedMeta(objectName)
if err != nil {
	log.Fatalf("Failed to get object detailed metadata: %v", err)
}
log.Printf("Object Meta: %+v\n", props)         

SSS

Bir pakete nesne yüklerken aynı anda meta veri ayarladığımda, pakette aynı ada sahip mevcut bir nesnenin üzerine yazılmasını nasıl önlerim?

Paket içinde aynı ada sahip nesnelerin üzerine yazılmasını önlemek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

  • Sürüm oluşturmayı etkinleştirin

    Paket için sürüm oluşturmayı etkinleştirirseniz OSS, aynı ada sahip mevcut nesneyi önceki bir sürüm olarak korur ve yüklediğiniz nesneyi geçerli sürüm olarak depolar. Önceki sürümleri istediğiniz zaman geri yükleyebilirsiniz. Daha fazla bilgi için bkz. Sürüm kontrolünü etkinleştirin.

  • Yükleme isteğine x-oss-forbid-overwrite üst bilgisini ekleyin

    Yükleme isteğine x-oss-forbid-overwrite üst bilgisini ekleyebilir ve bu üst bilginin değerini true olarak ayarlayabilirsiniz. Mevcut bir nesneyle aynı ada sahip bir nesne yüklerseniz yükleme işlemi başarısız olur ve OSS FileAlreadyExists hatasını döndürür. Daha fazla bilgi için bkz. PutObject.

İlgili konular

  • Nesne meta verilerini sorgulamak için kullanılan tam örnek kodu görüntülemek üzere GitHub adresini ziyaret edin.

  • Basit yükleme sırasında nesne meta verilerini yapılandırmak için çağırabileceğiniz API işlemi hakkında daha fazla bilgi için bkz. PutObject.

  • Mevcut bir nesnenin meta verilerini değiştirmek için kullanılan API işlemi hakkında daha fazla bilgi için bkz. CopyObject.

  • Nesne meta verilerini sorgulamak için çağırabileceğiniz API işlemleri hakkında daha fazla bilgi için bkz. GetObjectMeta ve HeadObject.