开发者社区 问答 正文

Go-SDK之如何实现自定义域名绑定?

OSS支持用户将自定义的域名绑定到OSS服务上,这样能够支持用户无缝地将存储 迁移到OSS上。例如用户的域名是my-domain.com,之前用户的所有图片资源都是 形如 的格式,用户将图片存储迁移到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)

这样就可以通过原地址 访问到存储在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)

展开
收起
青衫无名 2017-10-19 14:30:59 2154 分享 版权
阿里云 AI 助理回答

您已经详细描述了如何在阿里云对象存储(OSS)上绑定自定义域名并使用SDK进行操作的过程。这里我再简要概括一下关键步骤,并补充一些可能需要的注意事项和建议:

  1. 开通OSS服务并创建Bucket:首先,您需要登录阿里云控制台,开通OSS服务并创建一个新的Bucket来存放您的资源。

  2. 绑定自定义域名:在OSS管理控制台中,找到“域名管理”或类似选项,将您的自定义域名(如img.my-domain.com)与刚创建的Bucket绑定。这一步骤会生成一个需要添加到您DNS记录中的CNAME目标地址。

  3. 修改DNS配置:登录您的域名提供商后台,为您的自定义域名添加一条CNAME记录,指向OSS提供的Endpoint地址(例如my-bucket.oss-cn-hangzhou.aliyuncs.com)。注意,DNS更新可能需要一定时间才能生效。

  4. 使用SDK上传和访问文件:在代码中,当使用OSS SDK时,通过设置UseCname(true)参数来指示SDK使用自定义域名作为访问点。示例代码您已提供,展示了如何上传、下载、列出及删除对象。

  5. 跨域资源共享(CORS):如果您需要从不同源访问这些资源,别忘了在OSS Bucket的属性设置中配置CORS规则,以允许跨域请求。

  6. 注意事项

    • 确保自定义域名的有效性和DNS解析正确无误。
    • 使用CNAME后,直接通过Bucket Endpoint列出所有Bucket的操作将不可用,因为自定义域名是与单个Bucket绑定的。
    • 考虑到安全性,建议启用HTTPS对您的自定义域名进行加密访问,OSS支持为绑定的自定义域名开启SSL证书。
    • 监控和日志:利用OSS的监控和日志服务,可以帮助您更好地追踪请求情况和排查问题。

按照上述步骤操作,您可以无缝地将原有资源迁移至OSS,并继续使用原有的访问路径,同时享受到OSS带来的高可用、低成本和大规模数据存储能力。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答