All Products
Search
Document Center

Object Storage Service:Mengelola tautan simbolik (Go SDK V1)

Last Updated:Nov 29, 2025

Tautan simbolik menyediakan cara praktis untuk mengakses objek yang sering digunakan dalam sebuah bucket. Setelah membuat tautan simbolik, Anda dapat menggunakannya seperti shortcut Windows untuk mengakses objek target.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Topik ini memperoleh kredensial akses dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.

  • Topik ini membuat instans OSSClient menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasi client (Go SDK V1).

  • Untuk membuat tautan simbolik, Anda harus memiliki izin oss:PutObject. Untuk mengambil tautan simbolik, Anda harus memiliki izin oss:GetObject. Untuk informasi selengkapnya, lihat Berikan izin kustom kepada RAM user.

Buat tautan simbolik

Kode berikut menunjukkan contoh cara membuat tautan simbolik:

package main

import (
	"log"

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

func main() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
	}

	// Buat instans OSSClient.
	// Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
	// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
	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 {
		log.Fatalf("Gagal membuat client OSS: %v", err)
	}

	// Tentukan nama bucket, misalnya examplebucket.
	bucketName := "examplebucket"
	// Tentukan nama tautan simbolik, misalnya examplesymlink.txt.
	symObjectKey := "examplesymlink.txt"
	// Tentukan nama objek target yang ditunjuk oleh tautan simbolik, misalnya exampleobject.txt.
	objectName := "exampleobject.txt"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
	}

	// Buat tautan simbolik.
	options := []oss.Option{
		// Tentukan apakah akan menimpa objek dengan nama yang sama. Nilai true akan menimpa objek tersebut. Nilai false tidak akan menimpanya.
		oss.ForbidOverWrite(true),
		// Tentukan daftar kontrol akses (ACL) objek. Pada contoh ini, ACL diatur ke Private.
		oss.ObjectACL(oss.ACLPrivate),
		// Tentukan kelas penyimpanan objek. Pada contoh ini, kelas penyimpanan diatur ke Standard.
		oss.StorageClass(oss.StorageStandard),
	}

	err = bucket.PutSymlink(symObjectKey, objectName, options...)
	if err != nil {
		log.Fatalf("Gagal membuat tautan simbolik '%s' yang menunjuk ke '%s': %v", symObjectKey, objectName, err)
	}

	log.Println("Tautan simbolik berhasil dibuat")
}

Dapatkan nama objek target

Untuk mengambil tautan simbolik, Anda harus memiliki izin baca terhadapnya. Kode berikut menunjukkan contoh cara mengambil tautan simbolik dan nama file objek yang ditunjuknya:

package main

import (
	"log"

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

func main() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
	}

	// Buat instans OSSClient.
	// Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
	// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
	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 {
		log.Fatalf("Gagal membuat client OSS: %v", err)
	}

	// Tentukan nama bucket, misalnya examplebucket.
	bucketName := "examplebucket"
	// Tentukan nama tautan simbolik.
	symlinkName := "examplesymlink.txt"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
	}

	// Dapatkan nama objek target yang ditunjuk oleh tautan simbolik.
	meta, err := bucket.GetSymlink(symlinkName)
	if err != nil {
		log.Fatalf("Gagal mendapatkan tautan simbolik '%s': %v", symlinkName, err)
	}

	target := meta.Get(oss.HTTPHeaderOssSymlinkTarget)
	log.Printf("Tautan simbolik '%s' menunjuk ke: %s", symlinkName, target)
}

Referensi

  • Untuk informasi selengkapnya mengenai operasi API untuk membuat tautan simbolik, lihat PutSymlink.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengambil tautan simbolik, lihat GetSymlink.