シンボリックリンクは、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」をご参照ください。