OSS支援使用對象標籤(Object Tagging)對儲存空間(Bucket)中的檔案(Object)進行分類,您可以針對相同標籤的Object設定生命週期規則、存取權限等。
注意事項
本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS訪問網域名稱、資料中心、開放連接埠。
本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
本文以OSS網域名稱建立OSSClient為例。如果您希望通過自訂網域名、STS等方式建立OSSClient,請參見初始化。
要設定對象標籤,您必須具有
oss:PutObjectTagging
許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。
上傳Object時添加對象標籤
簡單上傳時添加對象標籤
以下代碼用於簡單上傳時添加對象標籤。
package main import ( "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 建立OSSClient執行個體。 // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。 // yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。 clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // 設定簽名版本 clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填寫Bucket名稱,例如examplebucket。 bucketName := "examplebucket" // 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。 objectName := "exampledir/exampleobject.txt" // 擷取儲存空間。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填寫對象標籤的鍵(例如owner)和值(例如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"), oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) }
分區上傳時添加對象標籤
以下代碼用於分區上傳本地檔案時添加對象標籤。
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 建立OSSClient執行個體。 // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。 // yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。 clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // 設定簽名版本 clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填寫Bucket名稱,例如examplebucket。 bucketName := "examplebucket" // 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。 objectName := "exampledir/exampleobject.txt" // 填寫本地檔案的完整路徑,例如D:\\localpath\\examplefile.txt。 // 如果未指定本地路徑只填寫了檔案名稱(例如examplefile.txt),則預設從樣本程式所屬專案對應本地路徑中上傳檔案。 fileName := "D:\\localpath\\examplefile.txt" // 擷取儲存空間。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填寫對象標籤的鍵(例如owner)和值(例如John)。 tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // 將檔案分成3個分區進行上傳,具體分區數請根據檔案大小確定。 chunks, err := oss.SplitFileByPartNum(fileName, 3) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 開啟檔案。 fd, err := os.Open(fileName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } defer fd.Close() // 初始化上傳的檔案,並設定對象標籤。 imur, err := bucket.InitiateMultipartUpload(objectName, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 分區上傳。 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)) }
追加上傳時添加對象標籤
以下代碼用於追加上傳時添加對象標籤。
package main import ( "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 建立OSSClient執行個體。 // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。 // yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。 clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // 設定簽名版本 clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填寫Bucket名稱,例如examplebucket。 bucketName := "examplebucket" // 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。 objectName := "exampledir/exampleobject.txt" // 擷取儲存空間。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填寫對象標籤的鍵(例如owner)和值(例如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 // 第一次上傳可追加的檔案。只有第一次調用AppendObject時設定的標籤才會生效,後續再調用AppendObject設定的標籤不生效。 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) } // 第二次上傳。 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)) }
斷點續傳上傳時添加對象標籤
以下代碼用於斷點續傳上傳本地檔案時添加對象標籤。
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 建立OSSClient執行個體。 // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。 // yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。 clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // 設定簽名版本 clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填寫Bucket名稱,例如examplebucket。 bucketName := "examplebucket" // 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。 objectName := "exampledir/exampleobject.txt" // 填寫本地檔案的完整路徑,例如D:\\localpath\\examplefile.txt。 // 如果未指定本地路徑只填寫了檔案名稱(例如examplefile.txt),則預設從樣本程式所屬專案對應本地路徑中上傳檔案。 fileName := "D:\\localpath\\examplefile.txt" // 擷取儲存空間。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填寫對象標籤的鍵(例如owner)和值(例如John)。 tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // 將檔案分成多個分區,每個分區大小為100 KB,使用3個協程並發上傳分區,上傳時設定對象標籤。 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)) }
對已上傳Object添加或更改對象標籤
如果上傳Object時未添加對象標籤或者添加的對象標籤不滿足使用需求,您可以在上傳Object後為Object添加或更改對象標籤。
以下代碼用於對已上傳Object添加或更改對象標籤。
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 建立OSSClient執行個體。
// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
// yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 設定簽名版本
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填寫Bucket名稱,例如examplebucket。
bucketName := "examplebucket"
// 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。
objectName := "exampledir/exampleobject.txt"
// 擷取儲存空間。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 依次填寫對象標籤的鍵(例如owner)和值(例如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.PutObjectTagging(objectName, tagging)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
為Object指定版本添加或更改對象標籤
在已開啟版本控制的Bucket中,通過指定Object的版本ID(versionId),您可以為Object指定版本添加或更改對象標籤。
以下代碼用於為Object指定版本添加或更改對象標籤。
關於擷取versionId的具體操作,請參見列舉檔案。
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() {
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 建立OSSClient執行個體。
// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
// yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 設定簽名版本
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填寫Bucket名稱,例如examplebucket。
bucketName := "examplebucket"
// 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。
objectName := "exampledir/exampleobject.txt"
// 填寫Object的版本ID。
versionId := "CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****"
// 擷取儲存空間。
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// 依次填寫對象標籤的鍵(例如owner)和值(例如John)。
tag1 := oss.Tag{
Key: "owner",
Value: "John",
}
tag2 := oss.Tag{
Key: "type",
Value: "document",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
// 為Object指定版本設定標籤資訊。
err = bucket.PutObjectTagging(objectName, tagging, oss.VersionId(versionId))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
拷貝Object時設定對象標籤
拷貝Object時,可以指定如何設定目標Object的對象標籤。取值如下:
Copy(預設值):複製源Object的對象標籤到目標Object。
Replace:忽略源Object的對象標籤,直接採用請求中指定的對象標籤。
以下分別提供了簡單拷貝1 GB以下的Object及分區拷貝1 GB以上的Object時設定對象標籤的詳細樣本。
簡單拷貝時設定對象標籤
以下代碼用於簡單拷貝1 GB以下的Object時設定對象標籤。
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 建立OSSClient執行個體。 // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。 // yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。 clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // 設定簽名版本 clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填寫Bucket名稱,例如examplebucket。 bucketName := "examplebucket" // 填寫源Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如srcexampledir/exampleobject.txt。 srcObjectName := "srcexampledir/exampleobject.txt" // 填寫目標Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如destexampledir1/exampleobject.txt。 destObjectName1 := "destexampledir1/exampleobject.txt" // 填寫目標Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如destexampledir2/exampleobject.txt。 destObjectName2 := "destexampledir2/exampleobject.txt" // 擷取儲存空間。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填寫對象標籤的鍵(例如owner)和值(例如John)。 tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // 複製Object時只設定tagging參數,Object標籤資訊不生效。 _, err = bucket.CopyObject(srcObjectName, destObjectName1, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 複製Object時同時設定TaggingReplace和tagging兩個參數,Object標籤資訊才生效。 _, 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)) }
分區拷貝時設定對象標籤
以下代碼用於分區拷貝1 GB以上的Object時設定對象標籤。
package main import ( "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 建立OSSClient執行個體。 // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。 // yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。 clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // 設定簽名版本 clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填寫Bucket名稱,例如examplebucket。 bucketName := "examplebucket" // 填寫源Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如srcexampledir/exampleobject.txt。 srcObjectName := "srcexampledir/exampleobject.txt" // 填寫目標Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如destexampledir/exampleobject.txt。 destObjectName := "destexampledir/exampleobject.txt" // 擷取儲存空間。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填寫對象標籤的鍵(例如owner)和值(例如John)。 tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // 上傳一個Object,用於分區拷貝。 content := "this your object value" err = bucket.PutObject(srcObjectName, strings.NewReader(content)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 初始化上傳的檔案,並設定對象標籤。 imur, err := bucket.InitiateMultipartUpload(destObjectName, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 將Object分成1個分區進行上傳。 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)) }
為軟連結檔案設定標籤
以下代碼用於為軟連結檔案設定標籤。
package main
import (
"fmt"
"os"
"strings"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 建立OSSClient執行個體。
// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
// yourRegion填寫Bucket所在地區,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 設定簽名版本
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填寫Bucket名稱,例如examplebucket。
bucketName := "examplebucket"
// 填寫Object完整路徑,Object完整路徑中不能包含Bucket名稱。例如exampledir/exampleobject.txt。
objectName := "exampledir/exampleobject.txt"
// 填寫軟連結完整路徑,例如shortcut/myobject.txt。
symlinkName := "shortcut/myobject.txt"
// 擷取儲存空間。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 依次填寫對象標籤的鍵(例如owner)和值(例如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))
}