初始化
目前支持“华北-北京”、“华南-广州”和“华东-苏州”三个区域。北京区域:,广州区域:http://gz.bcebos.com
,苏州区域:。对应信息为:
要使用百度云BOS,您需要拥有一个有效的AK(Access Key ID)和SK(Secret Access Key)用来进行签名认证。AK/SK是由系统分配给用户的,均为字符串,用于标识用户,为访问BOS做签名验证。
可以通过如下步骤获得并了解您的AK/SK信息:
BOS Client是BOS服务的客户端,为开发者与BOS服务进行交互提供了一系列的方法。
通过AK/SK方式访问BOS,用户可以参考如下代码新建一个BOS Client:
申请STS token
BOS可以通过STS机制实现第三方的临时授权访问。STS(Security Token Service)是百度云提供的临时授权服务。通过STS,您可以为第三方用户颁发一个自定义时效和权限的访问凭证。第三方用户可以使用该访问凭证直接调用百度云的API或SDK访问百度云资源。
通过STS方式访问BOS,用户需要先通过STS的client申请一个认证字符串,申请方式可参见百度云STS使用介绍。
用STS token新建BOS Client
申请好STS后,可将STS Token配置到BOS Client中,从而实现通过STS Token创建BOS Client。
代码示例
GO SDK实现了STS服务的接口,用户可以参考如下完整代码,实现申请STS Token和创建BOS Client对象:
import (
"fmt"
"github.com/baidubce/bce-sdk-go/auth" //导入认证模块
"github.com/baidubce/bce-sdk-go/services/bos" //导入BOS服务模块
"github.com/baidubce/bce-sdk-go/services/sts" //导入STS服务模块
)
func main() {
// 创建STS服务的Client对象,Endpoint使用默认值
AK, SK := <your-access-key-id>, <your-secret-access-key>
stsClient, err := sts.NewClient(AK, SK)
if err != nil {
fmt.Println("create sts client object :", err)
return
}
// 获取临时认证token,有效期为60秒,ACL为空
sts, err := stsClient.GetSessionToken(60, "")
if err != nil {
fmt.Println("get session token failed:", err)
return
fmt.Println("GetSessionToken result:")
fmt.Println(" accessKeyId:", sts.AccessKeyId)
fmt.Println(" secretAccessKey:", sts.SecretAccessKey)
fmt.Println(" sessionToken:", sts.SessionToken)
fmt.Println(" createTime:", sts.CreateTime)
fmt.Println(" expiration:", sts.Expiration)
fmt.Println(" userId:", sts.UserId)
// 使用申请的临时STS创建BOS服务的Client对象,Endpoint使用默认值
bosClient, err := bos.NewClient(sts.AccessKeyId, sts.SecretAccessKey, "")
if err != nil {
fmt.Println("create bos client failed:", err)
return
}
stsCredential, err := auth.NewSessionBceCredentials(
sts.AccessKeyId,
sts.SecretAccessKey,
sts.SessionToken)
if err != nil {
fmt.Println("create sts credential object failed:", err)
}
bosClient.Config.Credentials = stsCredential
}
如果用户需要配置BOS Client的一些细节的参数,可以在创建BOS Client对象之后,使用该对象的导出字段Config
进行自定义配置,可以为客户端配置代理,最大连接数等参数。
下面一段代码可以让客户端使用代理访问BOS服务:
// import "github.com/baidubce/bce-sdk-go/services/bos"
//创建BOS Client对象
ENDPOINT := "bj.bcebos.com"
client, _ := bos.NewClient(AK, SK, ENDPOINT)
//代理使用本地的8080端口
client.Config.ProxyUrl = "127.0.0.1:8080"
用户可以通过如下的示例代码进行网络参数的设置:
// import "github.com/baidubce/bce-sdk-go/services/bos"
AK, SK := <your-access-key-id>, <your-secret-access-key>
ENDPOINT := "bj.bcebos.com"
client, _ := bos.NewClient(AK, SK, ENDPOINT)
// 配置签名使用的HTTP请求头为`Host`
headersToSign := map[string]struct{}{"Host": struct{}{}}
client.Config.SignOption.HeadersToSign = HeadersToSign
// 配置签名的有效期为30秒
client.Config.SignOption.ExpireSeconds = 30
参数说明
用户使用GO SDK访问BOS时,创建的BOS Client对象的Config
字段支持的所有参数如下表所示:
配置项名称 | 类型 | 含义 |
---|---|---|
Endpoint | string | 请求服务的域名 |
ProxyUrl | string | 客户端请求的代理地址 |
Region | string | 请求资源的区域 |
UserAgent | string | 用户名称,HTTP请求的User-Agent头 |
Credentials | auth.BceCredentials | 请求的鉴权对象,分为普通AK/SK与STS两种 |
SignOption | auth.SignOptions | 认证字符串签名选项 |
Retry | RetryPolicy | 连接重试策略 |
ConnectionTimeoutInMillis | int | 连接超时时间,单位毫秒,默认20分钟 |