下载与安装
相关资源
对象存储 COS 的 XML Go SDK 源码下载地址:XML Go SDK。示例 Demo 下载地址:COS XML Go SDK 示例。更多信息请参见 COS Go SDK API 文档。SDK 文档中的所有示例代码请参见 SDK 代码示例。SDK 更新日志请参见 ChangeLog。SDK 常见问题请参见:Go SDK 常见问题。说明 如果您在使用 SDK 时遇到函数或方法不存在等错误,请先将 SDK 升级到最新版再重试。
环境依赖
Golang:用于下载和安装 Go 编译运行环境,请前往 Golang 官网进行下载。
安装 SDK
执行以下命令安装 COS Go SDK:
go get -u github.com/tencentyun/cos-go-sdk-v5
开始使用
下面为您介绍如何使用 COS Go SDK 完成一个基础操作,如初始化客户端、创建存储桶、查询存储桶列表、上传对象、查询对象列表、下载对象和删除对象。
初始化
注意建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引原则,防止泄漏目标存储桶或对象之外的资源。如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。使用 COS 域名生成 COS GO 客户端 Client 结构。
方法原型
func NewClient(uri *BaseURL, httpClient *http.Client) *Client
参数说明
// BaseURL 访问各 API 所需的基础 URLtype BaseURL struct { // 访问 bucket, object 相关 API 的基础 URL(不包含 path 部分): https://examplebucket-1250000000.cos..myqcloud.com BucketURL *url.URL // 访问 service API 的基础 URL(不包含 path 部分): https://cos..myqcloud.com ServiceURL *url.URL // 访问 Batch API 的基础 URL (不包含 path 部分): https://.cos-control..myqcloud.com BatchURL *url.URL // 访问 CI 的基础 URL (不包含 path 部分): https://examplebucket-1250000000.ci..myqcloud.com CIURL *url.URL}
参数名称 | 参数描述 | 类型 | 是否必填 |
BucketURL | 访问 bucket, object 相关 API 的基础 URL(不包含 path 部分) | string | 是 |
ServiceURL | 访问 service API 的基础 URL(不包含 path 部分) | string | 否 |
BatchURL | 访问 Batch API 的基础 URL (不包含 path 部分) | string | 否 |
CIURL | 访问 CI 的基础 URL (不包含 path 部分) | string | 否 |
请求示例1:使用永久密钥
// 将 examplebucket-1250000000 和 COS_REGION 修改为用户真实的信息// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket// COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")// 用于 Get Service 查询,默认全地域 service.cos.myqcloud.comsu, _ := url.Parse("https://cos.COS_REGION.myqcloud.com")b := &cos.BaseURL{BucketURL: u, ServiceURL: su}// 1.永久密钥client := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 },})
请求示例2:使用临时密钥
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket// COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")b := &cos.BaseURL{BucketURL: u}// 2.临时密钥client := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ // 如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048 SecretID: "SECRETID", SecretKey: "SECRETKEY", SessionToken: "SECRETTOKEN", },})if client != nil { // 调用 COS 请求}
说明 临时密钥生成和使用可参见 临时密钥生成及使用指引。
请求示例3:设置域名
通过修改 BaseURL,可以直接使用自定义域名或者全球加速域名访问 COS。
// 使用全球加速域名访问COSu, _ := url.Parse("http://.cos.accelerate.myqcloud.com")b := &cos.BaseURL{BucketURL: u}// 2.临时密钥client := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ // 如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048 SecretID: "SECRETID", SecretKey: "SECRETKEY", SessionToken: "SECRETTOKEN", },})
请求示例4:CRC64校验
COS Go SDK 默认开启了文件上传 CRC64 检验。注意COS Go SDK 版本需要大于等于 v0.7.23。强烈建议用户不关闭 CRC64 校验。
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息// 存储桶名称,由 bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket// COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")b := &cos.BaseURL{BucketURL: u}// 2.临时密钥client := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ // 如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048 SecretID: "SECRETID", SecretKey: "SECRETKEY", SessionToken: "SECRETTOKEN", },})// 关闭 CRC64 校验client.Conf.EnableCRC = false
创建存储桶
package main
import ( "context" "net/http" "net/url" "os"
"github.com/tencentyun/cos-go-sdk-v5")
func main() { // 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com") b := &cos.BaseURL{BucketURL: u} c := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, })
_, err := c.Bucket.Put(context.Background(), nil) if err != nil { panic(err) }}
查询存储桶列表
package main
import ( "context" "fmt" "net/http" "os"
"github.com/tencentyun/cos-go-sdk-v5")
func main() { c := cos.NewClient(nil, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, })
s, _, err := c.Service.Get(context.Background()) if err != nil { panic(err) }
for _, b := range s.Buckets { fmt.Printf("%#v\n", b) }}
上传对象
package main
import ( "context" "net/http" "net/url" "os" "strings"
"github.com/tencentyun/cos-go-sdk-v5")
func main() { // 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com") b := &cos.BaseURL{BucketURL: u} c := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, }) // 对象键(Key)是对象在存储桶中的唯一标识。 // 例如,在对象的访问域名 `examplebucket-1250000000.cos.COS_REGION.myqcloud.com/test/objectPut.go` 中,对象键为 test/objectPut.go name := "test/objectPut.go" // 1.通过字符串上传对象 f := strings.NewReader("test")
_, err := c.Object.Put(context.Background(), name, f, nil) if err != nil { panic(err) } // 2.通过本地文件上传对象 _, err = c.Object.PutFromFile(context.Background(), name, "../test", nil) if err != nil { panic(err) } // 3.通过文件流上传对象 fd, err := os.Open("./test") if err != nil { panic(err) } defer fd.Close() _, err = c.Object.Put(context.Background(), name, fd, nil) if err != nil { panic(err) }}
查询对象列表
package main
import ( "context" "fmt" "net/http" "net/url" "os"
"github.com/tencentyun/cos-go-sdk-v5")
func main() { // 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com") b := &cos.BaseURL{BucketURL: u} c := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, })
opt := &cos.BucketGetOptions{ Prefix: "test", MaxKeys: 3, } v, _, err := c.Bucket.Get(context.Background(), opt) if err != nil { panic(err) }
for _, c := range v.Contents { fmt.Printf("%s, %d\n", c.Key, c.Size) }}
下载对象
package main
import ( "context" "fmt" "io/ioutil" "net/http" "net/url" "os"
"github.com/tencentyun/cos-go-sdk-v5")
func main() { // 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com") b := &cos.BaseURL{BucketURL: u} c := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, }) // 1.通过响应体获取对象 name := "test/objectPut.go" resp, err := c.Object.Get(context.Background(), name, nil) if err != nil { panic(err) } bs, _ := ioutil.ReadAll(resp.Body) resp.Body.Close() fmt.Printf("%s\n", string(bs)) // 2.获取对象到本地文件 _, err = c.Object.GetToFile(context.Background(), name, "exampleobject", nil) if err != nil { panic(err) }}
删除对象
package main
import ( "context" "net/http" "net/url" "os"
"github.com/tencentyun/cos-go-sdk-v5")
func main() { // 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com") b := &cos.BaseURL{BucketURL: u} c := cos.NewClient(b, &http.Client{ Transport: &cos.AuthorizationTransport{ SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, }) name := "test/objectPut.go" _, err := c.Object.Delete(context.Background(), name) if err != nil { panic(err) }}
对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/145574.html