シンボリックリンクは、Windows で使用されるショートカットのように、オブジェクトにマップする特殊なオブジェクトです。 シンボリックリンクには、ユーザー定義のオブジェクトメタを構成できます。

次のコードを実行してシンボリックリンクを作成します。

package main

import (
    "fmt"
    "os"
    "strings"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    bucketName := "<yourBucketName>"
    // The symbolic link.
    objectName := "<yourSymlinkName>"
    // The target object that the symbolic link directs to
    targetObjectName := "<yourSymlinkTargetName>"

    // Obtain the bucket.
    bucket, err := client.Bucket(bucketName)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create a symbolic link.
    err = bucket.PutSymlink(objectName, targetObjectName)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Upload a file to the object that the symbolic link directs to.
    err = bucket.PutObject(targetObjectName, strings.NewReader("target"))
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    err = bucket.PutSymlink(objectName, targetObjectName)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Obtain the content of the object that the symbolic link directs to.
    meta, err := bucket.GetSymlink(objectName)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println(meta.Get(oss.HTTPHeaderOssSymlinkTarget))
}
		

シンボリックリンク作成の詳細については、「PutSymlink」をご参照ください。

シンボリックリンクのオブジェクトコンテンツの取得

シンボリックリンクを取得するには、読み取り許可を持っていなければなりません。 次のコードを実行して、シンボリックリンクのオブジェクトコンテンツを取得します。

package main

import (
    "fmt"
    "os"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    bucketName := "<yourBucketName>"
    // Symbolic Link name.
    objectName := "<yourSymlinkObjectName>"

    // Obtain the bucket.
    bucket, err := client.Bucket(bucketName)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Obtain the content of the object that the symbolic link directs to.
    meta, err := bucket.GetSymlink(objectName)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println(meta.Get(oss.HTTPHeaderOssSymlinkTarget))
}
			

シンボリックリンクの取得の詳細については、「GetSymlink」をご参照ください。