全部产品
Search
文档中心

Object Storage Service:Kelola tautan simbolik (Go SDK V2)

更新时间:Nov 09, 2025

Tautan simbolik memberikan cara yang nyaman untuk mengakses file yang sering digunakan dalam sebuah bucket, mirip dengan pintasan di Windows. Topik ini menjelaskan cara menggunakan OSS SDK untuk Go untuk membuat dan mengambil tautan simbolik.

Catatan

  • Contoh kode dalam topik ini menggunakan Wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan titik akhir OSS.

  • Contoh dalam topik ini menunjukkan cara menggunakan kredensial akses yang dibaca dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.

  • Untuk membuat tautan simbolik, Anda harus memiliki izin oss:PutObject. Untuk mengambil tautan simbolik, Anda harus memiliki izin oss:GetObject. Untuk informasi lebih lanjut, lihat Berikan kebijakan akses kustom kepada Pengguna RAM.

Definisi metode

Buat tautan simbolik

func (c *Client) PutSymlink(ctx context.Context, request *PutSymlinkRequest, optFns ...func(*Options)) (*PutSymlinkResult, error)

Dapatkan tautan simbolik

func (c *Client) GetSymlink(ctx context.Context, request *GetSymlinkRequest, optFns ...func(*Options)) (*GetSymlinkResult, error)

Parameter permintaan

Parameter

Tipe

Deskripsi

ctx

context.Context

Konteks dari permintaan. Anda dapat menggunakan parameter ini untuk menetapkan batas waktu total untuk permintaan.

request

*PutSymlinkRequest

Parameter permintaan untuk operasi API untuk membuat tautan simbolik. Untuk informasi lebih lanjut, lihat PutSymlinkRequest.

*GetSymlinkRequest

Parameter permintaan untuk operasi API untuk mendapatkan tautan simbolik. Untuk informasi lebih lanjut, lihat GetSymlinkRequest.

optFns

...func(*Options)

(Opsional) Parameter konfigurasi tingkat operasi. Untuk informasi lebih lanjut, lihat Options.

Nilai kembali

Nilai kembali

Tipe

Deskripsi

result

*PutSymlinkResult

Nilai kembali dari operasi API untuk membuat tautan simbolik. Parameter ini valid ketika err adalah nil. Untuk informasi lebih lanjut, lihat RestoreObjectResult.

*GetSymlinkResult

Nilai kembali dari operasi API untuk mendapatkan tautan simbolik. Parameter ini valid ketika err adalah nil. Untuk informasi lebih lanjut, lihat GetSymlinkResult.

err

error

Status permintaan. Jika permintaan gagal, nilai err tidak nil.

Contoh kode

Buat tautan simbolik

Gunakan kode berikut untuk membuat tautan simbolik.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Definisikan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
	objectName string // Nama objek.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
	flag.StringVar(&objectName, "object", "", "Nama objek.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Definisikan nama tautan simbolik.
	var (
		symlinkName = "testsymlink" // Nama tautan simbolik.
	)

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah nama objek kosong.
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama objek diperlukan")
	}

	// Periksa apakah nama tautan simbolik kosong.
	if len(symlinkName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama tautan simbolik diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menyetel tautan simbolik.
	putRequest := &oss.PutSymlinkRequest{
		Bucket: oss.Ptr(bucketName),  // Nama bucket.
		Key:    oss.Ptr(symlinkName), // Tentukan nama tautan simbolik.
		Target: oss.Ptr(objectName),  // Tentukan nama file objek ke mana tautan simbolik menunjuk.
	}

	// Eksekusi permintaan untuk menyetel tautan simbolik.
	putResult, err := client.PutSymlink(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("gagal menyetel tautan simbolik %v", err)
	}

	// Cetak hasil penyetelan tautan simbolik.
	log.Printf("hasil tautan simbolik:%#v\n", putResult)
}

Dapatkan tautan simbolik

Gunakan kode berikut untuk mengambil tautan simbolik dan nama file objek yang dituju.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Definisikan variabel global.
var (
	region      string // Wilayah.
	bucketName  string // Nama bucket.
	symlinkName string // Nama tautan simbolik.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
	flag.StringVar(&symlinkName, "symlink", "", "Nama tautan simbolik.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah nama tautan simbolik kosong.
	if len(symlinkName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama tautan simbolik diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mendapatkan tautan simbolik.
	getRequest := &oss.GetSymlinkRequest{
		Bucket: oss.Ptr(bucketName),  // Nama bucket.
		Key:    oss.Ptr(symlinkName), // Nama tautan simbolik.
	}

	// Eksekusi operasi untuk mendapatkan tautan simbolik dan proses hasilnya.
	getResult, err := client.GetSymlink(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("gagal mendapatkan tautan simbolik %v", err)
	}

	// Cetak nama file objek ke mana tautan simbolik menunjuk.
	log.Printf("dapatkan nama objek target tautan simbolik:%#v\n", *getResult.Target)
}

Referensi

  • Untuk kode contoh lengkap terkait tautan simbolik, lihat contoh GitHub put_symlink.go dan get_symlink.go.

  • Untuk informasi lebih lanjut tentang operasi pada tautan simbolik, lihat Tautan simbolik.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk membuat tautan simbolik, lihat PutSymlink.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengambil tautan simbolik, lihat GetSymlink.