数据处理及使用

    可通过如下代码设置一条生命周期规则:

    查看生命周期规则

    可通过如下代码查看Bucket内的生命周期规则:

    1. res, err := bosClient.GetBucketLifecycle(bucketName)
    2. fmt.Printf("%+v\n", res.Rule)

    删除生命周期规则

    可通过如下代码清空生命周期规则:

    1. err := bosClient.DeleteBucketLifecycle(bucketName)

    跨域资源共享

    跨域资源共享(Cross-Origin Resource Sharing),简称CORS,是HTML5提供的标准跨域解决方案,BOS目前已经支持CORS标准来实现跨域访问。关于跨域访问的介绍请参考。

    设置CORS规则

    用户可针对Bucket设置CORS规则,支持通过json字符串、文件、流、对象方式设置:

    1. // import "github.com/baidubce/bce-sdk-go/service/bos/api"
    2. // 1. 通过流式调用接口进行设置
    3. err := bosClient.PutBucketCors(bucketName, body)
    4. // 2. 直接传入字符串
    5. err := bosClient.PutBucketCorsFromString(bucketName, corsString)
    6. // 3. 传入CORS文件名
    7. // 4. 传入对象
    8. corsObj := &api.BucketCORSType{
    9. AllowedOrigins: []string{"example.com"},
    10. AllowedMethods: []string{"HEAD", "GET"},
    11. AllowedHeaders: []string{"*"},
    12. AllowedExposeHeaders: []string{"*"},
    13. MaxAgeSeconds: 3600,
    14. }
    15. err := bosClient.PutBucketCorsFromStruct(bucketName, &api.PutBucketCorsArgs{corsObj})

    获取CORS规则

    用户可获取指定Bucket的CORS规则:

    1. result, err := bosClient.GetBucketCors(bucketName)

    结果对象的定义与PutBucketCorsFromStruct接口的请求参数相同。

    删除CORS规则

    可参考如下代码删除Bucket的CORS规则,删除后的Bucket将无法进行跨域访问。

    1. err := bosClient.DeleteBucketCors(bucketName)

    每个Bucket会有自身的存储类型,如果该Bucket下的Object上传时未指定存储类型则会默认继承该Bucket的存储类型。

    设置Bucket存储类型

    Bucket默认的存储类型为标准模式,用户可以通过下面的代码进行设置:

    1. storageClass := "STANDARD_IA"
    2. err := bosClient.PutBucketStorageclass(bucketName, storageClass)

    获取Bucket存储类型

    1. storageClass, err := bosClient.GetBucketStorageclass(bucketName)

    设置访问日志

    BOS GO SDK支持将用户访问Bucket时的请求记录记录为日志,用户可以指定访问Bucket的日志存放的位置。日志会包括请求者、Bucket名称、请求时间和请求操作等。关于Bucket日志的详细功能说明可参见设置访问日志

    用户通过设置用于放置日志的Bucket和日志文件前缀来开启Bucket日志功能。下面的示例代码可以设置访问日志的位置和前缀:

    查看Bucket日志设置

    下面的代码分别给出了如何获取给定Bucket的日志配置信息:

    1. res, err := bosClient.GetBucketLogging(bucketName)
    2. fmt.Println(res.Status)
    3. fmt.Println(res.TargetBucket)
    4. fmt.Println(res.TargetPrefix)

    关闭Bucket日志

    需要关闭Bucket的日志功能是,只需调用删除接口即可实现:

    1. err := bosClient.DeleteBucketLogging(bucketName)

    设置服务端加密功能

    用户可针对一个Bucket设置开启服务端加密的功能,所有存储到该Bucket的数据将会进行加密存储,保证数据安全性。

    algorithm参数为加密算法,当前只支持“AES256”加密算法。

    获取服务端加密

    用户可调用如下接口获取Bucket的服务端加密功能:

    1. algorithm, err := bosClient.GetBucketEncryption(bucketName)

    删除服务端加密功能

    用户可调用如下接口删除指定Bucket的服务端加密功能:

    1. err := bosClient.DeleteBucketEncryption(bucketName)

    原图保护功能

    用户可针对Bucket下存储的图片设置原图保护功能,用户需指定待保护的资源。

    开启原图保护功能

    通过如下代码开启原图保护功能:

    1. err := bosClient.PutBucketCopyrightProtection(bucket, resources)

    获取原图保护设置

    用户通过如下示例代码获取Bucket设置的原图保护的资源:

    1. resources, err := bosClient.GetBucketCopyrightProtection(bucketName)

    开启静态网站托管

    用户可通过如下示例代码设置一个Bucket开启静态网站托管的功能:

    1. // import "github.com/baidubce/bce-sdk-go/service/bos/api"
    2. // 1. 通过流式调用接口进行设置
    3. err := bosClient.PutBucketStaticWebsite(bucketName, body)
    4. // 2. 直接传入json字符串
    5. jsonStr := `{"index": "index.html", "notFound": "404.html"}`
    6. err := bosClient.PutBucketStaticWebsiteFromString(bucketName, jsonStr)
    7. // 3. 传入对象
    8. args := &api.BucketStaticWebsiteType{
    9. Index: "index.html",
    10. NotFound: "404.html",
    11. }
    12. err := bosClient.PutBucketStaticWebsiteFromStruct(bucketName, args)
    13. // 4. 简单接口设置
    14. err := bosClient.SimplePutBucketStaticWebsite(bucketName, "index.html", "404.html")

    获取静态网站托管的设置

    用户通过如下代码获取指定Bucket的静态网站托管的设置情况:

    1. result, err := bosClient.SimplePutBucketStaticWebsite(bucketName)
    2. fmt.Println(result.NotFound)

    删除静态网站托管的设置

    通过如下示例代码删除指定Bucket的静态网站托管功能:

    1. err := bosClient.DeleteBucketStaticWebsite(bucketName)

    跨区域复制

    BOS提供了跨区域复制功能,针对用户在某个物理区域创建的Bucket,为了数据安全或其他目的,可配置将整个Bucket的数据复制到物理上的另一个区域。

    开启Bucket跨区域复制功能

    用户可通过如下代码开启Bucket的跨区域复制功能:

    1. // 1. json字符串
    2. jsonStr := `{
    3. "status":"enabled",
    4. "resource":[
    5. "bucket/abc",
    6. "bucket/cd*",
    7. "destination": {
    8. "bucket":"bucket-name",
    9. "storageClass":"COLD"
    10. },
    11. "replicateHistory": {
    12. "bucket":"bucket-name",
    13. "storageClass":"COLD"
    14. },
    15. "replicateDeletes":"enabled",
    16. "id":"sample-bucket-replication-config"
    17. }`
    18. err := bosClient.PutBucketReplicationFromString(bucketName, jsonStr)
    19. // 2. 使用配置文件名
    20. err := bosClient.PutBucketReplicationFromFile(bucketName, configFile)
    21. // 3. 使用参数对象
    22. argsObj := &api.PutBucketReplicationArgs{
    23. Id: "sample-bucket-replication-config",
    24. Status: "enabled",
    25. Resource: []string{"bucket/abc"},
    26. ReplicateDeletes: "enabled",
    27. Destination: &api.BucketReplicationDescriptor{"bucket-abc", "COLD"},
    28. ReplicateHistory: &api.BucketReplicationDescriptor{"bucket-abc", "COLD"},
    29. }
    30. err := bosClient.PutBucketReplicationFromStruct(bucketName, argsObj)
    31. // 4. 使用流
    32. err := bosClient.PutBucketReplication(bucketName, bodyStream)

    获取Bucket跨区域复制的配置

    用户可使用如下示例代码获取Bucket的跨区域复制的配置,返回的结果与Put接口字段相同。

    1. result, err := bosClient.GetBucketReplication(bucketName)

    删除Bucket跨区域复制配置

    用户可使用如下示例代码删除Bucket跨区域复制功能:

    1. err := bosClient.DeleteBucketReplication(bucketName)

    获取跨区域复制到进度

    由于跨区域复制需要后台进行异步复制操作,用户可通过如下接口查询当前复制到进度:

    1. result, err := bosClient.GetBucketReplicationProgress(bucketName)

    返回的结果对象包含了如下字段:

    • Status(string): 当前的状态
    • HistoryReplicationPercent(float64): 当前复制到进度
    • (string): 最近一次执行复制的时间