OSS支援使用者將自訂的網域名稱綁定到OSS服務上,這樣能夠支援使用者無縫地將儲存遷移到OSS上。例如使用者的網域名稱是my-domain.com,之前使用者的所有圖片資源都是形如http://img.my-domain.com/xx.jpg
的格式,使用者將圖片儲存遷移到OSS之後,通過綁定自訂網域名,仍可以使用原來的地址訪問到圖片:
- 開通OSS服務並建立Bucket
- 將img.my-domain.com與建立的Bucket綁定
- 將圖片上傳到OSS的這個Bucket中
- 修改網域名稱的DNS配置,增加一個CNAME記錄,將img.my-domain.com指向OSS服務的endpoint(如my-bucket.oss-cn-hangzhou.aliyuncs.com)
這樣就可以通過原地址http://img.my-domain.com/x.jpg
訪問到儲存在OSS上的圖片。綁定自訂網域名請參考自訂網域名綁定
在使用SDK時,可以使用自訂網域名作為endpoint,這時需要將UseCname
參數設定為true,如下面的例子:
提示:
- 跨域資源共用的範例程式碼在
sample/cname_sample.go
。
import (
"fmt"
"io/ioutil"
"strings"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret", oss.UseCname(true))
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket("my-bucket")
if err != nil {
// HandleError(err)
}
err = bucket.PutObject("my-object", strings.NewReader("MyObjectValue"))
if err != nil {
// HandleError(err)
}
body, err := bucket.GetObject("my-object")
if err != nil {
// HandleError(err)
}
data, err := ioutil.ReadAll(body)
if err != nil {
// HandleError(err)
}
body.Close()
data = data // 處理資料
lsRes, err := bucket.ListObjects()
if err != nil {
// HandleError(err)
}
fmt.Println("Objects:", lsRes.Objects)
err = bucket.DeleteObject("my-object")
if err != nil {
// HandleError(err)
}
注意:
- 使用Cname時,無法使用list_buckets介面。(因為自訂網域名已經綁定到某個特定的Bucket)