初始化

    目前支持“华北-北京”、“华南-广州”和“华东-苏州”三个区域。北京区域:,广州区域: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对象:

    1. import (
    2. "fmt"
    3. "github.com/baidubce/bce-sdk-go/auth" //导入认证模块
    4. "github.com/baidubce/bce-sdk-go/services/bos" //导入BOS服务模块
    5. "github.com/baidubce/bce-sdk-go/services/sts" //导入STS服务模块
    6. )
    7. func main() {
    8. // 创建STS服务的Client对象,Endpoint使用默认值
    9. AK, SK := <your-access-key-id>, <your-secret-access-key>
    10. stsClient, err := sts.NewClient(AK, SK)
    11. if err != nil {
    12. fmt.Println("create sts client object :", err)
    13. return
    14. }
    15. // 获取临时认证token,有效期为60秒,ACL为空
    16. sts, err := stsClient.GetSessionToken(60, "")
    17. if err != nil {
    18. fmt.Println("get session token failed:", err)
    19. return
    20. fmt.Println("GetSessionToken result:")
    21. fmt.Println(" accessKeyId:", sts.AccessKeyId)
    22. fmt.Println(" secretAccessKey:", sts.SecretAccessKey)
    23. fmt.Println(" sessionToken:", sts.SessionToken)
    24. fmt.Println(" createTime:", sts.CreateTime)
    25. fmt.Println(" expiration:", sts.Expiration)
    26. fmt.Println(" userId:", sts.UserId)
    27. // 使用申请的临时STS创建BOS服务的Client对象,Endpoint使用默认值
    28. bosClient, err := bos.NewClient(sts.AccessKeyId, sts.SecretAccessKey, "")
    29. if err != nil {
    30. fmt.Println("create bos client failed:", err)
    31. return
    32. }
    33. stsCredential, err := auth.NewSessionBceCredentials(
    34. sts.AccessKeyId,
    35. sts.SecretAccessKey,
    36. sts.SessionToken)
    37. if err != nil {
    38. fmt.Println("create sts credential object failed:", err)
    39. }
    40. bosClient.Config.Credentials = stsCredential
    41. }

    如果用户需要配置BOS Client的一些细节的参数,可以在创建BOS Client对象之后,使用该对象的导出字段Config进行自定义配置,可以为客户端配置代理,最大连接数等参数。

    下面一段代码可以让客户端使用代理访问BOS服务:

    1. // import "github.com/baidubce/bce-sdk-go/services/bos"
    2. //创建BOS Client对象
    3. ENDPOINT := "bj.bcebos.com"
    4. client, _ := bos.NewClient(AK, SK, ENDPOINT)
    5. //代理使用本地的8080端口
    6. client.Config.ProxyUrl = "127.0.0.1:8080"

    用户可以通过如下的示例代码进行网络参数的设置:

    1. // import "github.com/baidubce/bce-sdk-go/services/bos"
    2. AK, SK := <your-access-key-id>, <your-secret-access-key>
    3. ENDPOINT := "bj.bcebos.com"
    4. client, _ := bos.NewClient(AK, SK, ENDPOINT)
    5. // 配置签名使用的HTTP请求头为`Host`
    6. headersToSign := map[string]struct{}{"Host": struct{}{}}
    7. client.Config.SignOption.HeadersToSign = HeadersToSign
    8. // 配置签名的有效期为30秒
    9. client.Config.SignOption.ExpireSeconds = 30

    参数说明

    用户使用GO SDK访问BOS时,创建的BOS Client对象的Config字段支持的所有参数如下表所示:

    配置项名称类型含义
    Endpointstring请求服务的域名
    ProxyUrlstring客户端请求的代理地址
    Regionstring请求资源的区域
    UserAgentstring用户名称,HTTP请求的User-Agent头
    Credentialsauth.BceCredentials请求的鉴权对象,分为普通AK/SK与STS两种
    SignOptionauth.SignOptions认证字符串签名选项
    RetryRetryPolicy连接重试策略
    ConnectionTimeoutInMillisint连接超时时间,单位毫秒,默认20分钟