Object Storage Service (OSS), nesneleri sınıflandırmak için nesne etiketleri yapılandırmanıza olanak tanır. Etiketlere göre yaşam döngüsü kuralları yapılandırabilir ve nesnelere erişimi kontrol edebilirsiniz.
Notlar
Bu konuda China (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'ye erişmek istiyorsanız dahili bir 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 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. İstemci yapılandırma (Go SDK V1).
Bir nesneye etiket eklemek için
oss:PutObjectTaggingiznine sahip olmanız gerekir. Daha fazla bilgi için bkz. Özel ilke atama.
Nesne yüklerken nesneye etiket ekleme
-
Basit yükleme kullanarak nesne yüklerken nesneye etiket ekleme
Aşağıdaki kod, basit yükleme kullanarak nesne yüklerken nesneye nasıl etiket ekleneceğini gösterir:
package main import ( "fmt" "os" "strings" "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 { fmt.Println("Error:", err) os.Exit(-1) } // 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 { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Obtain the bucket information. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the key and the value of the object tag. For example, set the key to owner and the value to John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Add tags to the object. err = bucket.PutObject(objectName, strings.NewReader("Hello OSS"), oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) } -
Çok parçalı yükleme kullanarak nesne yüklerken nesneye etiket ekleme
Aşağıdaki kod, çok parçalı yükleme kullanarak nesne yüklerken nesneye nasıl etiket ekleneceğini gösterir:
package main import ( "fmt" "os" "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 { fmt.Println("Error:", err) os.Exit(-1) } // 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 { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. // If you specify only the name of the local file such as examplefile.txt without specifying the local path, the local file is uploaded from the path of the project to which the sample program belongs. fileName := "D:\\localpath\\examplefile.txt" // Obtain the bucket information. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the key and the value of the object tag. For example, set the key to owner and the value to John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // You can split an object into multiple parts for upload based on the object size. In this example, the object is split into three parts. chunks, err := oss.SplitFileByPartNum(fileName, 3) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Open the object. fd, err := os.Open(fileName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } defer fd.Close() // Initialize the uploaded object and configure object tagging. imur, err := bucket.InitiateMultipartUpload(objectName, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Start the multipart upload task. var parts []oss.UploadPart for _, chunk := range chunks { fd.Seek(chunk.Offset, os.SEEK_SET) part, err := bucket.UploadPart(imur, fd, chunk.Size, chunk.Number) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } parts = append(parts, part) } _, err = bucket.CompleteMultipartUpload(imur, parts) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) } -
Ekleme yoluyla yükleme kullanarak nesne yüklerken nesneye etiket ekleme
Aşağıdaki kod, ekleme yoluyla yükleme kullanarak nesne yüklerken nesneye nasıl etiket ekleneceğini gösterir:
package main import ( "fmt" "os" "strings" "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 { fmt.Println("Error:", err) os.Exit(-1) } // 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 { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Obtain the bucket information. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the key and the value of the object tag. For example, set the key to owner and the value to John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } var nextPos int64 // Upload the object by using append upload for the first time. When you call the AppendObject operation to add tags to an object, the tags can be added to the object only when the object is uploaded for the first time. nextPos, err = bucket.AppendObject(objectName, strings.NewReader("Hello OSS A \n"), nextPos, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Upload the object by using append upload for the second time. nextPos, err = bucket.AppendObject(objectName, strings.NewReader("Hello OSS B \n"), nextPos) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) } -
Kaldığı yerden devam ederek yükleme kullanarak nesne yüklerken nesneye etiket ekleme
Aşağıdaki kod, kaldığı yerden devam ederek yükleme kullanarak nesne yüklerken nesneye nasıl etiket ekleneceğini gösterir:
package main import ( "fmt" "os" "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 { fmt.Println("Error:", err) os.Exit(-1) } // 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 { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. // If you specify only the name of the local file such as examplefile.txt without specifying the local path, the local file is uploaded from the path of the project to which the sample program belongs. fileName := "D:\\localpath\\examplefile.txt" // Obtain the bucket information. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the key and the value of the object tag. For example, set the key to owner and the value to John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Split the object into multiple parts, each of which is 100 KB in size. Then, use 3 threads to concurrently upload the parts, and add tags to the object when you upload the parts. err = bucket.UploadFile(objectName, fileName, 100*1024, oss.Routines(3), oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) }
Yüklenmiş bir nesneye etiket ekleme veya nesnenin etiketlerini değiştirme
Mevcut bir nesnede etiket yoksa veya nesneye eklenen etiketler gereksinimlerinizi karşılamıyorsa mevcut nesneye etiket ekleyebilir veya nesnenin etiketlerini değiştirebilirsiniz.
Aşağıdaki kod, yüklenmiş bir nesneye nasıl etiket ekleneceğini veya nesnenin etiketlerinin nasıl değiştirileceğini gösterir:
package main
import (
"fmt"
"os"
"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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the name of the bucket. Example: examplebucket.
bucketName := "examplebucket"
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
objectName := "exampledir/exampleobject.txt"
// Obtain the bucket information.
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the key and the value of the object tag. For example, set the key to owner and the value to John.
tag1 := oss.Tag{
Key: "owner",
Value: "John",
}
tag2 := oss.Tag{
Key: "type",
Value: "document",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
// Add tags to the object.
err = bucket.PutObjectTagging(objectName, tagging)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
Belirli bir nesne sürümüne etiket ekleme veya nesne sürümünün etiketlerini değiştirme
Bir paket için sürüm oluşturma etkinleştirildiyse nesnenin sürüm kimliğini belirterek paketteki belirli bir nesne sürümüne etiket ekleyebilir veya bu sürümün etiketlerini değiştirebilirsiniz.
Aşağıdaki kod, belirli bir nesne sürümüne nasıl etiket ekleneceğini veya nesne sürümünün etiketlerinin nasıl değiştirileceğini gösterir.
Bir nesnenin sürüm kimliğini sorgulama hakkında daha fazla bilgi için bkz. Nesneleri listeleme (OSS SDK for Go 1.0).
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func HandleError(err error) {
fmt.Println("Error:", err)
os.Exit(-1)
}
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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the name of the bucket. Example: examplebucket.
bucketName := "examplebucket"
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
objectName := "exampledir/exampleobject.txt"
// Specify the version ID of the object.
versionId := "CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****"
// Obtain the bucket information.
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// Specify the key and the value of the object tag. For example, set the key to owner and the value to John.
tag1 := oss.Tag{
Key: "owner",
Value: "John",
}
tag2 := oss.Tag{
Key: "type",
Value: "document",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
// Add tags to the specified version of the object.
err = bucket.PutObjectTagging(objectName, tagging, oss.VersionId(versionId))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
Nesneyi kopyalarken nesneye etiket ekleme
Bir nesneyi kopyalarken nesne etiketlemeyi yapılandırmak için aşağıdaki yöntemlerden birini kullanabilirsiniz:
Kopyala: Kaynak nesnenin etiketi hedef nesneye kopyalanır.
Değiştir: Hedef nesne, kaynak nesnenin etiketi yerine istekte belirtilen etikete sahip olur.
Aşağıdaki örneklerde, basit kopyalama modunda 1 GB'dan küçük bir nesneye ve çok parçalı kopyalama modunda 1 GB'dan büyük bir nesneye nasıl etiket ekleneceği açıklanmaktadır:
-
Basit kopyalama modunda nesneyi kopyalarken nesneye etiket ekleme
Aşağıdaki kod, basit kopyalama modunda 1 GB'dan küçük bir nesneyi kopyalarken nesneye nasıl etiket ekleneceğini gösterir:
package main import ( "fmt" "os" "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 { fmt.Println("Error:", err) os.Exit(-1) } // 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 { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the source object. Do not include the bucket name in the full path. Example: srcexampledir/exampleobject.txt. srcObjectName := "srcexampledir/exampleobject.txt" // Specify the full path of the destination object. Do not include the bucket name in the full path. Example: destexampledir1/exampleobject.txt. destObjectName1 := "destexampledir1/exampleobject.txt" // Specify the full path of the destination object. Do not include the bucket name in the full path. Example: destexampledir2/exampleobject.txt. destObjectName2 := "destexampledir2/exampleobject.txt" // Obtain the bucket information. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the key and the value of the object tag. For example, set the key to owner and the value to John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // If you configure only the tagging parameter, tags cannot be added to the destination object. _, err = bucket.CopyObject(srcObjectName, destObjectName1, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tags can be added to the destination object only when you configure both the TaggingReplace and tagging parameters. _, err = bucket.CopyObject(srcObjectName, destObjectName2, oss.SetTagging(tagging), oss.TaggingDirective(oss.TaggingReplace)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(srcObjectName)) fmt.Println(bucket.GetObjectTagging(destObjectName1)) fmt.Println(bucket.GetObjectTagging(destObjectName2)) } -
Çok parçalı kopyalama modunda nesneyi kopyalarken nesneye etiket ekleme
Aşağıdaki kod, çok parçalı kopyalama modunda 1 GB'dan büyük bir nesneyi kopyalarken nesneye nasıl etiket ekleneceğini gösterir:
package main import ( "fmt" "os" "strings" "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 { fmt.Println("Error:", err) os.Exit(-1) } // 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 { fmt.Println("Error:", err) os.Exit(-1) } // Specify the name of the bucket. Example: examplebucket. bucketName := "examplebucket" // Specify the full path of the source object. Do not include the bucket name in the full path. Example: srcexampledir/exampleobject.txt. srcObjectName := "srcexampledir/exampleobject.txt" // Specify the full path of the destination object. Do not include the bucket name in the full path. Example: destexampledir/exampleobject.txt. destObjectName := "destexampledir/exampleobject.txt" // Obtain the bucket information. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Specify the key and the value of the object tag. For example, set the key to owner and the value to John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Upload an object for multipart copy. content := "this your object value" err = bucket.PutObject(srcObjectName, strings.NewReader(content)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Initialize the uploaded object and configure object tagging. imur, err := bucket.InitiateMultipartUpload(destObjectName, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Use the UploadPartCopy method to upload the object as one part. part, err := bucket.UploadPartCopy(imur, bucketName, srcObjectName, 0, int64(len(content)), 1) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } parts := []oss.UploadPart{part} _, err = bucket.CompleteMultipartUpload(imur, parts) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(destObjectName)) }
Sembolik bağlantıya etiket ekleme
Aşağıdaki kod, sembolik bir bağlantıya nasıl etiket ekleneceğini gösterir:
package main
import (
"fmt"
"os"
"strings"
"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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the name of the bucket. Example: examplebucket.
bucketName := "examplebucket"
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
objectName := "exampledir/exampleobject.txt"
// Specify the full path of the symbolic link. Example: shortcut/myobject.txt.
symlinkName := "shortcut/myobject.txt"
// Obtain the bucket information.
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the key and the value of the object tag. For example, set the key to owner and the value to John.
tag1 := oss.Tag{
Key: "owner",
Value: "John",
}
tag2 := oss.Tag{
Key: "type",
Value: "document",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
err = bucket.PutObject(objectName, strings.NewReader("Hello OSS"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
err = bucket.PutSymlink(objectName, symlinkName, oss.SetTagging(tagging))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}