存储空间管理

在对象存储系统中,存储空间(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 填写的子账号不存在