在对象存储系统中,存储空间(Bucket)是对象(object)的组织管理单位,对象(object)是存储空间的逻辑存储单元。本文介绍如何创建Bucket。
- 注: 管理存储空间之前,请参考config.json进行配置
创建存储空间
本SDK使用CreateBucket
创建一个 bucket,参数说明如下,完整代码详见 Github 。
- BucketName: 待创建Bucket的名称,具有全局唯一性。命名规范参见Bucket创建
- RegionId: 为地域。 参见 地域和可用区列表
- ProjectId: 项目ID。不填写为默认项目,若要创建在子帐号下则必须填写。 请参考GetProjectList接口
- BucketType: Bucket访问类型,public或private; 默认为private
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package main
import (
ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
"log"
)
const (
ConfigFile = "config.json"
BucketName = "test-bucket-demo"
RegionId = "cn-bj"
BucketType = "public"
ProjectId = ""
)
func main() {
// 加载配置,创建请求 (请先参考"github.com/ufilesdk-dev/ufile-gosdk/demo/config.json"填写配置文件)
config, err := ufsdk.LoadConfig(ConfigFile)
if err != nil {
panic(err.Error())
}
req, err := ufsdk.NewBucketRequest(config, nil)
if err != nil {
panic(err.Error())
}
// 创建存储空间
bucketRet, err := req.CreateBucket(BucketName, RegionId, BucketType, ProjectId)
if err != nil {
log.Fatalf("创建 bucket 出错,错误信息为:%s\n", err.Error())
}
log.Println("创建 Bucket 成功,bucket 为", bucketRet)
}
获取存储空间信息
本SDK使用DescribeBucket
获取存储空间信息,可指定BucketName
获取单个bucket详细信息,也可只指定ProjectId
获取该 project 账号下所有 Bucket 信息,完整代码详见 Github。
- BucketName: 待查找的Bucket名称
- Offset: 结果偏移量,默认为0
- Limit: 限制返回的 bucket 数量,默认20
- ProjectId: 项目ID。不填写为默认项目,若指定的BucketName在子帐号下则必须填写。 请参考GetProjectList接口
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
"log"
)
const (
ConfigFile = "config.json"
BucketName = "test-bucket-demo"
Offset = 0
Limit = 0
ProjectId = ""
)
func main() {
// 加载配置,创建请求
config, err := ufsdk.LoadConfig(ConfigFile)
if err != nil {
panic(err.Error())
}
req, err := ufsdk.NewBucketRequest(config, nil)
if err != nil {
panic(err.Error())
}
// 获取指定 BucketName 详细信息
bucketInfo, err := req.DescribeBucket(BucketName, Offset, Limit, ProjectId)
if err != nil {
log.Println("获取 bucket 信息出错,错误信息为:", err.Error())
} else {
log.Println("获取 bucket 信息成功,bucketInfo 为:", bucketInfo)
}
// 获取指定 projectId 下所有Bucket信息
bucketList, err := req.DescribeBucket("", Offset, Limit, ProjectId)
if err != nil {
log.Println("获取 bucket 信息出错,错误信息为:", err.Error())
} else {
log.Println("获取 bucket list 成功,list 为", bucketList)
}
}
修改存储空间访问类型
本SDK使用UpdateBucket
更新存储空间访问类型,完整代码详见 Github。
- BucketName:待修改的Bucket名称
- BucketType: Bucket访问类型,public或private,必须填写
- ProjectId: 项目ID。不填写为默认项目,若bucket在子帐号下必须填写。 请参考GetProjectList接口
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package main
import (
ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
"log"
)
const (
ConfigFile = "config.json"
BucketName = "test-bucket-demo"
BucketType = "private"
ProjectId = ""
)
func main() {
// 加载配置,创建请求
config, err := ufsdk.LoadConfig(ConfigFile)
if err != nil {
panic(err.Error())
}
req, err := ufsdk.NewBucketRequest(config, nil)
if err != nil {
panic(err.Error())
}
// 修改存储空间访问类型
bucketRet, err := req.UpdateBucket(BucketName, BucketType, ProjectId)
if err != nil {
log.Println("更新 bucket 信息失败,错误信息为:", err.Error())
} else {
log.Println("Bucket 更新成功。返回信息为:", bucketRet)
}
}
删除存储空间
本SDK使用DeleteBucket
删除存储空间,完整代码详见 Github。
- BucketName:待删除的Bucket名称
- ProjectId: 项目ID。不填写为默认项目,若bucket在子帐号下必须填写。 请参考GetProjectList接口
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package main
import (
ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
"log"
)
const (
ConfigFile = "config.json"
BucketName = "test-bucket-demo"
ProjectId = ""
)
func main() {
// 加载配置,创建请求
config, err := ufsdk.LoadConfig(ConfigFile)
if err != nil {
panic(err.Error())
}
req, err := ufsdk.NewBucketRequest(config, nil)
if err != nil {
panic(err.Error())
}
// 删除存储空间
bucketRet, err := req.DeleteBucket(BucketName, ProjectId)
if err != nil {
log.Println("删除 bucket 失败,错误信息为:", err.Error())
} else {
log.Println("删除 bucket 成功。返回信息为:", bucketRet)
}
}
错误码
CreateBucket
HTTP 状态码 | RetCode | ErrMsg | 描述 |
---|---|---|---|
200 | 171 | Signature VerifyAC Error | 签名有误 |
200 | 15001 | invalid bucket name | BucketName不符合命名规范,详见 CreateBucket |
200 | 230 | Params [Region] not available | Region 无效,参见地域和域名 |
200 | 15017 | invalid parameter [ensure Type is public or private] | BucketType 只允许为public或private |
200 | 292 | Project [xxxxxx] not exists | 填写的子账号不存在 |
DescribeBucket
HTTP 状态码 | RetCode | ErrMsg | 描述 |
---|---|---|---|
200 | 15010 | bucket not found | 填写的BucketName找不到 |
200 | 15018 | invalid range [Offset]%!(EXTRA string=0,10000) | Offset取值范围为[0,10000] |
200 | 15018 | invalid range [Limit]%!(EXTRA string=1,10000) | Limit取值范围为[0,10000] |
200 | 292 | Project [xxxxxx] not exists | 填写的子账号不存在 |
UpdateBucket
HTTP 状态码 | RetCode | ErrMsg | 描述 |
---|---|---|---|
200 | 15010 | bucket not found | 填写的BucketName找不到 |
200 | 15017 | invalid parameter [ensure Type is public or private] | BucketType 只允许为public或private |
200 | 292 | Project [xxxxxx] not exists | 填写的子账号不存在 |
DeleteBucket
HTTP 状态码 | RetCode | ErrMsg | 描述 |
---|---|---|---|
200 | 15010 | bucket not found | 填写的BucketName找不到 |
200 | 292 | Project [xxxxxx] not exists | 填写的子账号不存在 |