OSS mendukung object tagging untuk mengklasifikasikan objek dalam bucket. Anda dapat menetapkan aturan siklus hidup dan izin akses untuk objek yang memiliki tag yang sama.
Catatan penggunaan
Topik ini menggunakan public endpoint wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan OSS, gunakan internal endpoint. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Regions and endpoints.
Kredensial akses pada topik ini diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials.
Instans OSSClient pada topik ini dibuat menggunakan endpoint OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Configure a client (Go SDK V1).
Untuk menyetel penandaan objek, Anda harus memiliki izin
oss:PutObjectTagging. Untuk informasi selengkapnya, lihat Grant custom access policies to RAM users.
Tambahkan penandaan objek saat unggah
Tambahkan penandaan objek saat simple upload
Kode berikut menunjukkan cara menambahkan penandaan objek saat simple upload.
package main import ( "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Dapatkan bucket. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Setel penandaan objek. 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)) }Tambahkan penandaan objek saat multipart upload
Kode berikut menunjukkan cara menambahkan penandaan objek saat melakukan multipart upload file lokal.
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Tentukan path lengkap file lokal. Misalnya, D:\\localpath\\examplefile.txt. // Jika Anda hanya menentukan nama file, seperti examplefile.txt, file tersebut akan diunggah dari path lokal proyek yang berisi program contoh. fileName := "D:\\localpath\\examplefile.txt" // Dapatkan bucket. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Pisahkan file menjadi tiga bagian untuk diunggah. Tentukan jumlah bagian berdasarkan ukuran file. chunks, err := oss.SplitFileByPartNum(fileName, 3) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buka file. fd, err := os.Open(fileName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } defer fd.Close() // Inisialisasi multipart upload dan setel penandaan objek. imur, err := bucket.InitiateMultipartUpload(objectName, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Unggah bagian-bagian. 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)) }Tambahkan penandaan objek saat append upload
Kode berikut menunjukkan cara menambahkan penandaan objek saat append upload.
package main import ( "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Dapatkan bucket. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke 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 // Tambahkan data ke objek yang dapat ditambahkan untuk pertama kali. Tag yang Anda setel dalam panggilan AppendObject pertama akan berlaku. Tag yang Anda setel dalam panggilan AppendObject berikutnya tidak berlaku. 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) } // Tambahkan data untuk kedua kalinya. 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)) }Tambahkan penandaan objek saat resumable upload
Kode berikut menunjukkan cara menambahkan penandaan objek saat melakukan resumable upload file lokal.
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt. objectName := "exampledir/exampleobject.txt" // Tentukan path lengkap file lokal. Misalnya, D:\\localpath\\examplefile.txt. // Jika Anda hanya menentukan nama file, seperti examplefile.txt, file tersebut akan diunggah dari path lokal proyek yang berisi program contoh. fileName := "D:\\localpath\\examplefile.txt" // Dapatkan bucket. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Pisahkan file menjadi beberapa bagian. Setel ukuran setiap bagian menjadi 100 KB. Gunakan tiga korutin untuk mengunggah bagian secara konkuren dan setel penandaan objek. 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)) }
Tambahkan atau ubah penandaan objek untuk objek yang telah diunggah
Jika Anda tidak menambahkan penandaan objek saat mengunggah objek atau tag yang ada tidak memenuhi kebutuhan Anda, Anda dapat menambahkan atau mengubah penandaan objek setelah unggah selesai.
Kode berikut menunjukkan cara menambahkan atau mengubah penandaan objek untuk objek yang telah diunggah.
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Misalnya, examplebucket.
bucketName := "examplebucket"
// Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt.
objectName := "exampledir/exampleobject.txt"
// Dapatkan bucket.
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John.
tag1 := oss.Tag{
Key: "owner",
Value: "John",
}
tag2 := oss.Tag{
Key: "type",
Value: "document",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
// Setel penandaan objek.
err = bucket.PutObjectTagging(objectName, tagging)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
Tambahkan atau ubah penandaan objek untuk versi tertentu dari suatu objek
Dalam bucket yang mengaktifkan Pengendalian versi, Anda dapat menambahkan atau mengubah penandaan objek untuk versi tertentu dari suatu objek dengan menentukan ID versinya.
Kode berikut menunjukkan cara menambahkan atau mengubah penandaan objek untuk versi tertentu dari suatu objek.
Untuk informasi selengkapnya tentang cara mendapatkan ID versi, lihat List objects (Go SDK V1).
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() {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Misalnya, examplebucket.
bucketName := "examplebucket"
// Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt.
objectName := "exampledir/exampleobject.txt"
// Tentukan ID versi objek.
versionId := "CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****"
// Dapatkan bucket.
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John.
tag1 := oss.Tag{
Key: "owner",
Value: "John",
}
tag2 := oss.Tag{
Key: "type",
Value: "document",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
// Setel tag untuk versi objek yang ditentukan.
err = bucket.PutObjectTagging(objectName, tagging, oss.VersionId(versionId))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
Setel penandaan objek saat menyalin objek
Saat menyalin objek, Anda dapat menentukan cara menyetel tag untuk objek tujuan. Nilai yang valid adalah:
Copy (default): Menyalin tag dari objek sumber ke objek tujuan.
Replace: Mengabaikan tag objek sumber dan menerapkan tag yang ditentukan dalam permintaan ke objek tujuan.
Contoh berikut menunjukkan cara menyetel penandaan objek saat menyalin objek. Simple copy digunakan untuk objek yang lebih kecil dari 1 GB, sedangkan multipart copy digunakan untuk objek yang lebih besar dari 1 GB.
Setel penandaan objek saat simple copy
Kode berikut menunjukkan cara menyetel penandaan objek saat melakukan simple copy objek yang lebih kecil dari 1 GB.
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Tentukan path lengkap objek sumber. Path lengkap tidak boleh mengandung nama bucket. Misalnya, srcexampledir/exampleobject.txt. srcObjectName := "srcexampledir/exampleobject.txt" // Tentukan path lengkap objek tujuan. Path lengkap tidak boleh mengandung nama bucket. Misalnya, destexampledir1/exampleobject.txt. destObjectName1 := "destexampledir1/exampleobject.txt" // Tentukan path lengkap objek tujuan. Path lengkap tidak boleh mengandung nama bucket. Misalnya, destexampledir2/exampleobject.txt. destObjectName2 := "destexampledir2/exampleobject.txt" // Dapatkan bucket. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Saat menyalin objek, jika Anda hanya menyetel parameter tagging, penandaan objek tidak berlaku. _, err = bucket.CopyObject(srcObjectName, destObjectName1, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Saat menyalin objek, Anda harus menyetel parameter TaggingReplace dan tagging agar penandaan objek berlaku. _, 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)) }Setel penandaan objek saat multipart copy
Kode berikut menunjukkan cara menyetel penandaan objek saat melakukan multipart copy objek yang lebih besar dari 1 GB.
package main import ( "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Tentukan path lengkap objek sumber. Path lengkap tidak boleh mengandung nama bucket. Misalnya, srcexampledir/exampleobject.txt. srcObjectName := "srcexampledir/exampleobject.txt" // Tentukan path lengkap objek tujuan. Path lengkap tidak boleh mengandung nama bucket. Misalnya, destexampledir/exampleobject.txt. destObjectName := "destexampledir/exampleobject.txt" // Dapatkan bucket. bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke John. tag1 := oss.Tag{ Key: "owner", Value: "John", } tag2 := oss.Tag{ Key: "type", Value: "document", } tagging := oss.Tagging{ Tags: []oss.Tag{tag1, tag2}, } // Unggah objek untuk multipart copy. content := "this your object value" err = bucket.PutObject(srcObjectName, strings.NewReader(content)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Inisialisasi multipart upload dan setel penandaan objek. imur, err := bucket.InitiateMultipartUpload(destObjectName, oss.SetTagging(tagging)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Pisahkan objek menjadi satu bagian untuk diunggah. 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)) }
Setel tag untuk symbolic link
Kode berikut menunjukkan cara menyetel tag untuk symbolic link.
package main
import (
"fmt"
"os"
"strings"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, tentukan Endpoint yang sebenarnya.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, tentukan wilayah yang sebenarnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Misalnya, examplebucket.
bucketName := "examplebucket"
// Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt.
objectName := "exampledir/exampleobject.txt"
// Tentukan path lengkap symbolic link. Misalnya, shortcut/myobject.txt.
symlinkName := "shortcut/myobject.txt"
// Dapatkan bucket.
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan kunci dan nilai untuk setiap tag objek. Misalnya, setel kunci ke owner dan nilai ke 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))
}