对象存储(v1.1)
# 对象存储公开API目录
# API概览
OSS产品提供以下相关API接口
API | 描述 |
---|---|
DescribeRegions | 查询所有对象存储节点信息。 |
DescribeProjects | 查询当前所有者的项目管理信息。 |
DescribeBuckets | 查询请求所有者的所有存储空间(Bucket)的相关信息 |
PutBucket | 创建存储空间(Bucket)。 |
PutBucketTags | 添加或修改存储空间(Bucket)的标签 |
GetBucketStat | 查询存储空间(Bucket)的相关信息。 |
GetBucketInfo | 查询存储空间(Bucket)的存储容量以及文件对象(Object)信息 |
GetBucketTags | 获取指定存储空间(Bucket)标签信息。 |
DeleteBucket | 删除指定存储空间(Bucket) |
DeleteBucketTags | 删除指定存储空间(Bucket)的标签信息 |
UplodObject | 上传对象(Object) |
UploadText | 上传字符串以文本对象存储到对象存储 |
MultipartUpload | 初始化,获得Upload ID(大文件上传步骤1)。 |
UploadPart | 上传分片(大文件上传步骤2)。 |
CompleteMultipartUpload | 完成上传(大文件上传步骤3)。 |
PutObjectTags | 更新对象对象(Object)标签信息 |
DeleteObject | 删除对象(Object)。 |
DeletePrefixObjects | 按前缀模糊删除对象(Object)。 |
DeleteMultipleObjects | 批量删除对象(Object)。 |
DeleteObjectTags | 删除对象(Object)标签。 |
DescribeSTS | 获取用户临时上传签名(用于前端表单直接上传到对象存储)。 |
GetObject | 下载对象(以返回url地址方式进行下载)。 |
ListObjects | 查询存储空间下的对象信息(Object)。 |
GeneratePresignedurl | 获取对象下载的url地址(私有存储空间可以获取带签名的url地址)。 |
HeadObject | 查询对象的headers信息。 |
GetObjectTags | 查询对象标签。 |
# 访问地址
地区 | 访问地址 |
---|---|
所有节点 | gic-ossapi.capitalonline.net |
# 实例
# DescribeRegions
Action: DescribeRegions
描述: 查询首云对象存储的节点信息。
请求方法: GET
注意事项:
使用DescribeRegions接口时,有如下注意事项:
- 无
参数:
- 请求元素
名称 | 类型 | 是否必需 | 描述 |
---|
无需请求参数
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/DescribeRegions/?Action=DescribeRegions&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=5b80e215-7c1b-11ed-af0c-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-15T01%3A54%3A05Z&Version=2019-08-08&Signature=pGm9BiUbypvhWJGYW0YpeiefJd8%3D
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": [{
"id": "1",
"name": "北京五",
"region": "oss-cn-beijing",
"endpoint": "oss-cnbj01.cdsgss.com"
}, {
"id": "11",
"name": "新加坡",
"region": "oss-sg-sgp",
"endpoint": "oss-sgp.cdsgss.com"
}, {
"id": "2",
"name": "法兰克福",
"region": "oss-en-fra",
"endpoint": "oss-fra.cdsgss.com"
}, {
"id": "3",
"name": "达拉斯",
"region": "oss-us-dal",
"endpoint": "oss-dal.cdsgss.com"
}, {
"id": "6",
"name": "宿迁",
"region": "oss-cn-sq",
"endpoint": "oss-cnsq01.cdsgss.com"
}],
"RequestId": "132d522f-f250-45df-b233-58ed64ceb39d"
}
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
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
Data数组的item | json | 是 | 节点信息描述 |
id | 数字 | 是 | 节点id,唯一标识 |
name | 字符串 | 是 | 节点名称 |
region | 字符串 | 是 | 节点所属区域 |
endpoint | 字符串 | 是 | 节点endpoint,用户上传对象的访问域名 |
# DescribeProjects
**Action:**DescribeProjects
**描述:**查询当前所有者对应的项目管理信息。
**请求方法:**GET
参数:
- 请求元素
名称 | 类型 | 是否必需 | 描述 |
---|
无需请求参数
请求示例:
注意事项:
使用DescribeProjects接口时,有如下注意事项:
- 无
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/DescribeProjects/?Action=DescribeProjects&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=5b80e215-7c1b-11ed-af0c-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-15T01%3A54%3A05Z&Version=2019-08-08&Signature=pGm9BiUbypvhWJGYW0YpeiefJd8%3D
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": [
{
"sort": 9999999,
"remark": "每个客户默认的项目组",
"name": "默认项目组",
"create_time": "",
"customer_id": "",
"id": "0-0"
},
{
"sort": 0,
"remark": "",
"name": "测试组",
"create_time": "2022-12-08 11:54:44",
"customer_id": "E2129039",
"id": "0ce7ec3a-76ac-11ed-9227-0ad8d3aab390"
}
],
"RequestId": "e65e4906-457b-45c9-8367-439e8690231c"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
Data数组的item | json | 是 | 节点信息描述 |
id | 字符串 | 是 | 节点id,唯一标识 |
name | 字符串 | 是 | 项目管理名称 |
sort | 数字 | 是 | 排序字段 |
# DescribeBuckets
Action: DescribeBuckets
描述: 查询请求所有者的所有存储空间(Bucket)的相关信息。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
bucket_type | 字符串 | 否 | 过滤条件,存储空间类型,默认""(可选范围public or private) |
alias_name | 字符串 | 否 | 过滤调,存储空间别名,默认"" |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 否 | 过滤条件,按存储空间名称或存储空间加endpoint限制查询范围。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用DescribeBuckets接口时,有如下注意事项:
- header Host参数选填,可通过Host过滤查询范围
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/DescribeBuckets/?Action=DescribeBuckets&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=edd1a2f2-7c41-11ed-8df3-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-15T06%3A30%3A12Z&Version=2019-08-08&Signature=1%2BKpy1nHF6HBZtNdr6PT8dxfZKg%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
2
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": [{
"id": "7bb541c6-75da-11ed-9cc2-2e526c464a8b",
"name": "cdn-logs",
"bucket_name": "cdn-logs",
"type": "public",
"type_display": "公共空间",
"object_count": 0,
"create_time": "2022-12-07T02:54:37Z",
"endpoint_url": "http://cdn-logs.4ab18755406843d98afd21eb9a3ec960.oss-cnbj01.cdsgss.com",
"status": "ENABLED",
"status_display": "启用",
"site": {
"id": "1",
"name": "北京五"
},
"user_id": "647595",
"customer_id": "E889466"
}, {
"id": "7cb4e7cfc9c85faa84369cf0d273d7e4",
"name": "eslogbakcup-cdn-logs-data",
"bucket_name": "eslogbakcup-cdn-logs-data",
"type": "private",
"type_display": "私有空间",
"object_count": 0,
"create_time": "2021-01-06T11:41:27Z",
"endpoint_url": "http://eslogbakcup-cdn-logs-data.4ab18755406843d98afd21eb9a3ec960.oss-cnbj01.cdsgss.com",
"status": "ENABLED",
"status_display": "启用",
"site": {
"id": "1",
"name": "北京五"
},
"user_id": "647595",
"customer_id": "E889466"
}],
"RequestId": "93c05f80-e563-4035-8da5-5eb0fda3d1b3"
}
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
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
Data数组的item | json | 是 | 节点信息描述 |
id | 字符串 | 是 | 存储空间id,唯一标识 |
name | 字符串 | 是 | 存储空间别名 |
type | 字符串 | 是 | 存储空间类型 |
type_display | 字符串 | 是 | 存储空间显示名称 |
object_count | 数字 | 是 | 存储空间下的对象个数 |
create_time | 日期 | 是 | 创建时间 |
endpoint_url | 字符串 | 是 | 容器的对应的域名访问地址 |
status | 字符串 | 是 | 状态 |
site | json | 是 | 节点信息 |
user_id | 字符串 | 是 | 用户ID |
customer_id | 字符串 | 是 | 客户ID |
# PutBucket
Action: PutBucket
描述: 创建存储空间(Bucket)。
请求方法: PUT
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
bucket_type | 字符串 | 是 | 存储空间类型(可选范围public or private) |
alias_name | 字符串 | 否 | 存储空间别名,默认存储空间名称 |
project_id | 字符串 | 否 | 项目id,默认"0-0" |
tags | 数组集合 | 否 | 标签集合 |
tag | 对象 | 否 | 标签对象 |
key | 字符串 | 是 | 标签名称,如果tag对象不为空该值必填 |
value | 字符串 | 否 | 标签值,默认"" |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用PutBucket接口时,有如下注意事项:
- header Host参数必填,必须通过Host参数指定创建的存储空间名称以及对应的节点的endpoint地址;存储空间名称必须唯一且只能是a-z0-9正则规范,名称长度必须大于3小于36个字符
请求示例:
PUT https://gic-ossapi.capitalonline.net/ossapi/PutBucket/?Action=PutBucket&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=43ba26d5-7c5b-11ed-8719-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-15T09%3A31%3A33Z&Version=2019-08-08&Signature=oG1yGrseNI9XYjnZVCf49eZRIbM%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"bucket_type": "public"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"id": "45b3a360-7c5b-11ed-9a11-2e526c464a8b",
"bucket_name": "test001",
"bucket_type": "public",
"endpoint": "oss-cnbj01.cdsgss.com",
"site_id": "1"
},
"RequestId": "24cbdd26-59be-4d20-9815-5b49bfd35190"
}
2
3
4
5
6
7
8
9
10
11
12
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
id | 字符串 | 是 | 存储空间id,唯一标识 |
bucket_name | 字符串 | 是 | 存储空间 |
bucket_type | 字符串 | 是 | 存储空间类型 |
endpoint | 字符串 | 是 | 存储空间的对应的endpoint地址 |
site_id | 字符串 | 是 | 节点id |
# PutBucketTags
Action: PutBucketTags
描述: 用于给某个存储空间(Bucket)添加或修改标签。
请求方法: PUT
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
tags | 集合 | 是 | 需要修改的标签集合,如传递[]会删除所有标签 |
tag | 对象 | 否 | 标签对象 |
key | 字符串 | 是 | 用户自定义标签的key,如tags数组元素大于等于1,该值必填 |
value | 字符串 | 否 | 用户自定义标签的vlaue |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用PutBucketTags接口时,有如下注意事项:
- 只有Bucket的拥有者才能为Bucket设置标签,否则返回403 Forbudden错误,错误码为AccessDenied。
- 最多可设置10对Bucket标签(Key-Value对),不可设置重复的标签
- PutBucketTags是覆盖语义,即新添加的标签会完全覆盖已有的标签。
请求示例:
PUT https://gic-ossapi.capitalonline.net/ossapi/PutBucketTags/?Action=PutBucketTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=a29b2226-7f63-11ed-af69-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T06%3A09%3A02Z&Version=2019-08-08&Signature=TqED%2B%2BNebz0dUZ58eJkvs48M%2Bes%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"tags": [{"key": "value", "key1": "value"}]}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"tags": [{
"key": "a",
"value": "value"
}]
},
"RequestId": "b2924680-daf9-401f-ac44-f32309c7e862"
}
2
3
4
5
6
7
8
9
10
11
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
tags | 数组集合 | 是 | 修改生效后的标签信息 |
key | 字符串 | 是 | 用户自定义标签的标签key |
value | 字符串 | 是 | 用户自定义标签的标签value |
# GetBucketInfo
Action: GetBucketInfo
描述: 查询存储空间(Bucket)的存储容量以及文件对象(Object)信息。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|
无
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用GetBucketInfo接口时,有如下注意事项:
- 如存储空间下有很多对象会造成请求时间变长
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/GetBucketInfo/?Action=GetBucketInfo&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=89d930e9-7f68-11ed-8a1c-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T06%3A44%3A08Z&Version=2019-08-08&Signature=yX4yLLS0HrsKOYiD54A76ZVOpek%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
2
3
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"bucket_object_count": 0,
"bucket_bytes_used": 0,
"storage_policy": "ec7",
"last_modified": "Thu, 15 Dec 2022 09:31:39 GMT",
"bucket_read": ".r:*,.rlistings",
"bucket_type": "public",
"object_list": []
},
"RequestId": "17f640c0-62e2-4c49-b7c7-c4a294cf4eb6"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
bucket_object_count | 数字 | 是 | 存储空间对象数量 |
bucket_bytes_used | 数字 | 是 | 存储空间使用量,单位字节 |
storage_policy | 字符串 | 是 | 存储策略 |
last_modified | 字符串 | 是 | 最后修改时间 |
bucket_read | 字符串 | 是 | 存储空间对容器操作权限 |
bucket_type | 字符串 | 是 | 存储空间类型 |
object_list | 数组集合 | 是 | 存储空间下的对象 |
# GetBucketStat
Action: GetBucketStat
描述: 查询存储空间(Bucket)的相关信息。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|
无
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用GetBucketStat接口时,有如下注意事项: 跟GetBucketInfo比对不会返回存储空间的object_list对象信息
请求示例:
PUT https://gic-ossapi.capitalonline.net/ossapi/PutBucketTags/?Action=PutBucketTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=a29b2226-7f63-11ed-af69-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T06%3A09%3A02Z&Version=2019-08-08&Signature=TqED%2B%2BNebz0dUZ58eJkvs48M%2Bes%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"tags": [{"key": "value", "key1": "value"}]}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"bucket_object_count": 4,
"bucket_bytes_used": 1222476,
"storage_policy": "ec7",
"last_modified": "Mon, 19 Dec 2022 06:09:04 GMT",
"bucket_read": ".r:*,.rlistings",
"bucket_type": "public"
},
"RequestId": "81ed8b6d-6ba2-4df3-b8de-26691603a63f"
}
2
3
4
5
6
7
8
9
10
11
12
13
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
bucket_object_count | 数字 | 是 | 存储空间对象数量 |
bucket_bytes_used | 数字 | 是 | 存储空间使用量,单位字节 |
storage_policy | 字符串 | 是 | 存储策略 |
last_modified | 字符串 | 是 | 最后修改时间 |
bucket_read | 字符串 | 是 | 存储空间对容器操作权限 |
bucket_type | 字符串 | 是 | 存储空间类型 |
# GetBucketTags
Action: GetBucketTags
描述: 用于给某个存储空间(Bucket)添加或修改标签。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|
无
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用GetBucketTags接口时,有如下注意事项:
- 无
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/GetBucketTags/?Action=GetObjectTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=9eea2e86-7f76-11ed-af2c-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T08%3A24%3A56Z&Version=2019-08-08&Signature=usZxX29EhOzFk1c9WgieD%2Bs2HOg%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
2
3
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"tags": [{
"key": "a",
"value": "value"
}]
},
"RequestId": "93a05c3a-0e48-4ee4-a0dd-2db098b70b1e"
}
2
3
4
5
6
7
8
9
10
11
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
tags | 数组集合 | 是 | 修改生效后的标签信息 |
key | 字符串 | 是 | 用户自定义标签的标签key |
value | 字符串 | 是 | 用户自定义标签的标签value |
# DeleteBucket
Action: DeleteBucket
描述: 删除指定存储空间(Bucket)。
请求方法: DELETE
参数:
名称 | 类型 | 是否必需 | 描述 |
---|
无
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用DeleteBucket接口时,有如下注意事项:
- 删除存储空间前必须清除存储空间下的所有对象,且删除后不能恢复,请谨慎操作
请求示例:
DELETE https://gic-ossapi.capitalonline.net/ossapi/DeleteBucket/?Action=PutBucketTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=a29b2226-7f63-11ed-af69-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T06%3A09%3A02Z&Version=2019-08-08&Signature=TqED%2B%2BNebz0dUZ58eJkvs48M%2Bes%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
2
3
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {},
"RequestId": "b2924680-daf9-401f-ac44-f32309c7e862"
}
2
3
4
5
6
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
# DeleteBucketTags
Action: DeleteBucketTags
描述: 删除指定存储空间(Bucket)的标签信息 。
请求方法: DELETE
参数:
名称 | 类型 | 是否必需 | 描述 |
---|
无
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用DeleteBucketTags接口时,有如下注意事项:
- 无
请求示例:
DELETE https://gic-ossapi.capitalonline.net/ossapi/DeleteBucketTags/?Action=DeleteBucketTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=bf2fb7c5-7f77-11ed-9e5b-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T08%3A33%3A00Z&Version=2019-08-08&Signature=pKPP4kO%2F3WrDXJkZ4VH1CGI7VtY%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"tags": [{"key": "value", "key1": "value"}]}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"tags": []
},
"RequestId": "a75acc5e-70f3-495a-b2c4-5256e497f59c"
}
2
3
4
5
6
7
8
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
tags | 数组集合 | 是 | 删除生效后的标签信息 |
# UplodObject
Action: UplodObject
描述: 上传对象(Object)。
请求方法: POST
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
files | 文件流 | 是 | 需要把本地对象转换为文件流进行上传 |
key | 字符串 | 是 | 上传到对象存储的对象名称 |
tags | 数组集合 | 否 | 上对到对象的标签集合 |
key | 字符串 | 是 | 对象标签名称,如果tag对象不为空该值必填 |
value | 字符串 | 否 | 对象标签值,默认"" |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用UplodObject接口时,有如下注意事项:
- header 的Content-Type必须为multipart/form-data;
请求示例:
POST https://gic-ossapi.capitalonline.net/ossapi/UploadObject/?Action=UploadObject&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=48b9f354-7f79-11ed-b635-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T08%3A44%3A00Z&Version=2019-08-08&Signature=YcaMmROsUnUk8z7hZWPQhZNG6YY%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'multipart/form-data; boundary=1d4e13d874451c75de18d976f0e86b35'
--data '--1d4e13d874451c75de18d976f0e86b35\r\nContent-Disposition: form-data; name="files"; filename="support.py"'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"content_type": "text/html; charset=UTF-8",
"date": "Mon, 19 Dec 2022 09:06:11 GMT",
"tags": [{
"key": "key",
"value": "value"
}]
},
"RequestId": "b8c5e665-3f2b-4881-b9fb-83dc4b5819f2"
}
2
3
4
5
6
7
8
9
10
11
12
13
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
date | 日期 | 是 | 上传的对象的实际 |
tags | 数组集合 | 是 | 标签信息 |
key | 字符串 | 是 | 用户自定义对象标签key |
value | 字符串 | 是 | 用户自定义对象标签value |
# UploadText
Action: UploadText
描述: 上传字符串以文本对象存储到对象存储(Object)。
请求方法: POST
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 上传到对象存储的对象名称 |
content | 字符串 | 是 | 上传字的符串 |
tags | 数组集合 | 否 | 上对到对象的标签集合 |
key | 字符串 | 是 | 对象标签名称,如果tag对象不为空该值必填 |
value | 字符串 | 否 | 对象标签值,默认"" |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用UploadText接口时,有如下注意事项:
- 无
请求示例:
POST https://gic-ossapi.capitalonline.net/ossapi/UploadText/?Action=UploadText&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=71d60ecc-7f7e-11ed-a82c-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T09%3A20%3A57Z&Version=2019-08-08&Signature=xI9SY9AELHxwJpaNPTy16g1A24M%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "test.txt", "content": "我是测试字符串"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"content_type": "text/html; charset=UTF-8",
"date": "Mon, 19 Dec 2022 09:20:58 GMT",
"tags": []
},
"RequestId": "be752206-9606-4a54-b7ed-84f456d3f58e"
}
2
3
4
5
6
7
8
9
10
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
date | 日期 | 是 | 上传的对象的实际 |
tags | 数组集合 | 是 | 标签信息 |
key | 字符串 | 是 | 用户自定义对象标签key |
value | 字符串 | 是 | 用户自定义对象标签value |
# MultipartUpload
Action: MultipartUpload
描述: 初始化,获得Upload ID(大文件上传步骤1)。
请求方法: POST
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 上传到对象存储的对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用MultipartUpload接口时,有如下注意事项:
- 大于5G的文件必须进行切片;且每个片的不能大于5G小于5M;片总数不能超过1000片
- 读取对象应根据终端的内存大小,逐步读取文件
- 大文件切片上传分为3个步骤;(初始化:MultipartUpload 上传切片:UploadPart 完成切片:CompleteMultipartUpload)
请求示例:
POST https://gic-ossapi.capitalonline.net/ossapi/MultipartUpload/?Action=InitiateMultipartUpload&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=8e97da35-7f80-11ed-b604-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T09%3A36%3A04Z&Version=2019-08-08&Signature=emt6R7jGkTmxZ%2BwvUW4X4yQ0cLI%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "rclone-v1.60.0-windows-amd64.zip"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"Upload_Id": "NTM4YzBkMjgtOTIxZC00N2FlLTlhYmItNjYxYjFmMTY0MDc2",
"Key": "rclone-v1.60.0-windows-amd64.zip"
},
"RequestId": "bc755ba6-dad6-4b88-9f6e-dec4abe9d712"
}
2
3
4
5
6
7
8
9
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
Upload_Id | 字符串 | 是 | 本次上传对象的唯一标识 |
key | 字符串 | 是 | 上传到对象存储的对象名称 |
# UploadPart
Action: UploadPart
描述: 上传分片对象(大文件上传步骤2)。。
请求方法: POST
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
files | 文件流 | 是 | 切片后文件流 |
key | 字符串 | 是 | 上传到对象存储的对象名称 |
upload_id | 字符串 | 否 | MultipartUpload方法返回的对象初始化唯一标识 |
part_number | 数字 | 是 | 片序号,从1开始自增长即可 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
- 使用UploadPart接口时,有如下注意事项:
- header 的Content-Type必须为multipart/form-data;
- 大于5G的文件必须进行切片;且每个片的不能大于5G小于5M;片总数不能超过1000片
- 读取对象应根据终端的内存大小,逐步读取文件
- 大文件切片上传分为3个步骤;(初始化:MultipartUpload 上传切片:UploadPart 完成切片:CompleteMultipartUpload)
请求示例:
POST https://gic-ossapi.capitalonline.net/ossapi/UploadPart/?Action=UploadPart&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=91790468-7f80-11ed-8c0e-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T09%3A36%3A09Z&Version=2019-08-08&Signature=tcJmvZcPAxoh0oHqHqgTu5p2dpg%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'multipart/form-data; boundary=1d4e13d874451c75de18d976f0e86b35'
--data '--1d4e13d874451c75de18d976f0e86b35\r\nContent-Disposition: form-data; name="files"; filename="support.py"'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"part_id": "159b8a6d72256dcffc10050d3a6065bc",
"content_type": "text/html; charset=UTF-8",
"date": "Mon, 19 Dec 2022 09:36:09 GMT"
},
"RequestId": "00fc0377-18cd-4901-ad59-ca2036696609"
}
2
3
4
5
6
7
8
9
10
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
date | 日期 | 是 | 上传的对象的实际 |
part_id | 字符串 | 是 | 片的唯一标识 |
# CompleteMultipartUpload
Action: CompleteMultipartUpload
描述: 完成对象切片上传(大文件上传步骤3)。
请求方法: POST
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 上传到对象存储的对象名称 |
upload_id | 字符串 | 是 | 初始化切片接口返回的切片文件唯一标识 |
multipart_info | 数组集合 | 是 | 切片信息 |
part_id | 字符串 | 是 | 片的唯一标识 |
part_number | 数字 | 是 | 片的序号,需跟UploadPart传递的part_number一致 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用CompleteMultipartUpload接口时,有如下注意事项:
- 大于5G的文件必须进行切片;且每个片的不能大于5G小于5M;片总数不能超过1000片
- 读取对象应根据终端的内存大小,逐步读取文件
- 大文件切片上传分为3个步骤;(初始化:MultipartUpload 上传切片:UploadPart 完成切片:CompleteMultipartUpload)
请求示例:
POST https://gic-ossapi.capitalonline.net/ossapi/CompleteMultipartUpload/?Action=CompleteMultipartUpload&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=939a4349-7f80-11ed-bede-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T09%3A36%3A12Z&Version=2019-08-08&Signature=KwSCbDZevbIMK6d0SFiCBZuW%2BKg%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "rclone-v1.60.0-windows-amd64.zip", "upload_id": "NTM4YzBkMjgtOTIxZC00N2FlLTlhYmItNjYxYjFmMTY0MDc2", "multipart_info": [{"part_id": "159b8a6d72256dcffc10050d3a6065bc", "part_number": 1}, {"part_id": "46603f8275c2e60534109190fa8d9bf0", "part_number": 2}]}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"url": "https://4ab18755406843d98afd21eb9a3ec960.oss-cnbj01.cdsgss.com/cdn-logs/rclone-v1.60.0-windows-amd64.zip"
},
"RequestId": "5bdfc5a8-65fc-4ce2-be72-35d01081ed02"
}
2
3
4
5
6
7
8
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
url | 字符串 | 是 | 对象的下载地址(如存储空间的类型为私有时,返回的的下载地址为有时效性) |
# PutObjectTags
Action: PutObjectTags
描述: 更新对象对象(Object)标签信息。
请求方法: PUT
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 对象名称 |
tags | 数组集合 | 否 | 标签集合 |
key | 字符串 | 是 | 对象标签名称,如果tag对象不为空该值必填 |
value | 字符串 | 否 | 对象标签值,默认"" |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用PutObjectTags接口时,有如下注意事项:
- 无
请求示例:
PUT https://gic-ossapi.capitalonline.net/ossapi/PutObjectTags/?Action=PutObjectTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=43ba26d5-7c5b-11ed-8719-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-15T09%3A31%3A33Z&Version=2019-08-08&Signature=oG1yGrseNI9XYjnZVCf49eZRIbM%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "support.py", "tags": [{"key": "value"}]}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"tags": [{
"key": "key",
"value": "value"
}]
},
"RequestId": "6fd2266a-bccc-4b58-94ae-703fad0b4f18"
}
2
3
4
5
6
7
8
9
10
11
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
tags | 数组集合 | 是 | 修改生效后的对象标签信息 |
key | 字符串 | 是 | 用户自定义标签的对象标签key |
value | 字符串 | 是 | 用户自定义标签的对象标签value |
# DeleteObject
Action: DeleteObject
描述: 删除对象(Object)。
请求方法: DELETE
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 需要删除的对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用DeleteObject接口时,有如下注意事项:
- 如未开启多版本删除后无法恢复,请谨慎操作
请求示例:
DELETE https://gic-ossapi.capitalonline.net/ossapi/DeleteObject/?Action=DeleteObject&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=711f3207-7f86-11ed-934d-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T10%3A18%3A11Z&Version=2019-08-08&Signature=opY7nuDeWAp7%2FSasCQ3jaoKRR6k%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "support.py"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {},
"RequestId": "e98e4c41-c683-4815-a8aa-db469d08df03"
}
2
3
4
5
6
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
# DeletePrefixObjects
Action: DeletePrefixObjects
描述: 按前缀模糊删除对象(Object)。
请求方法: DeletePrefixObjects
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
prefix | 字符串 | 是 | 模式删除的对象的条件 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用DeletePrefixObjects接口时,有如下注意事项:
- 如未开启多版本删除后无法恢复,请谨慎操作
- 单次模糊删除的对象最大不能超过1000
- 如有很对对象都能满足命中条件,请在控制台设置生命周期进行删除即可
请求示例:
DELETE https://gic-ossapi.capitalonline.net/ossapi/DeletePrefixObjects/?Action=DeletePrefixObjects&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=711f3207-7f86-11ed-934d-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T10%3A18%3A11Z&Version=2019-08-08&Signature=opY7nuDeWAp7%2FSasCQ3jaoKRR6k%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"prefix": "t"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": ["test.txt"],
"RequestId": "98e1db4f-8b3d-43e0-8338-506490fded5f"
}
2
3
4
5
6
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | 数组 | 是 | 成功删除的对象集合 |
# DeleteMultipleObjects
Action: DeleteMultipleObjects
描述: 批量删除对象(Object)。
请求方法: DELETE
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
keys | 数组 | 是 | 需要删除的对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用DeleteMultipleObjects接口时,有如下注意事项:
- 如未开启多版本删除后无法恢复,请谨慎操作
- 单次请求删除的对象数组最大不能超过1000
- 如有很对对象都能满足命中条件,请在控制台设置生命周期进行删除即可
请求示例:
DELETE https://gic-ossapi.capitalonline.net/ossapi/DeleteMultipleObjects/?Action=DeleteMultipleObjects&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=711f3207-7f86-11ed-934d-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T10%3A18%3A11Z&Version=2019-08-08&Signature=opY7nuDeWAp7%2FSasCQ3jaoKRR6k%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"keys": ["test/test1.txt", "test/test2.txt"]}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": ["test/test2.txt", "test/test1.txt"],
"RequestId": "33371659-e56c-4042-b52f-e38097b86fca"
}
2
3
4
5
6
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 批量删除的对象 |
# DescribeSTS
Action: DescribeSTS
描述: 获取用户临时上传签名(用于前端表单直接上传到对象存储)。
请求方法: POST
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
dir_path | 字符串 | 是 | 文件上传到容器的目录,根目录:"",其他目录以“/”结尾,示例:“test/a/” |
expires | 字符串 | 否 | 签名有效期,默认300秒 |
max_file_count | 字符串 | 否 | 单次请求最多允许上传的文件数量,默认50 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用DescribeSTS接口时,有如下注意事项:
- 无
请求示例:
POST https://gic-ossapi.capitalonline.net/ossapi/DescribeSTS/?Action=DescribeSTS&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=4f9d6511-8004-11ed-9317-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-20T01%3A19%3A12Z&Version=2019-08-08&Signature=bg7bqItSSnUyRDx7x1WHpAKwg2c%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"dir_path": "", "expires": 3600, "max_file_count": 100}'
2
3
4
5
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"upload_url": "https://oss-cnbj01.cdsgss.com/v1/AUTH_4ab18755406843d98afd21eb9a3ec960/cdn-logs",
"redirect": "",
"max_file_size": 524288000,
"max_file_count": 100,
"expires": 1671502753,
"signature": "13b4ce7edf0369d33377e7af46ed1cecf5ebf69e"
},
"RequestId": "3ab8c597-6ecf-4a54-8210-7cb29cde27a2"
}
2
3
4
5
6
7
8
9
10
11
12
13
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
upload_url | 字符串 | 是 | 文件上传到容器的目录地址 |
max_file_size | 字符串 | 是 | 单次最大允许上传的文件大小 |
max_file_count | 字符串 | 是 | 单次请求最多允许上传的文件数量 |
expires | 字符串 | 是 | 有效期 |
signature | 字符串 | 是 | 签名信息 |
上传示例:
curl --location --request POST 'https://oss-cnbj01.cdsgss.com/v1/AUTH_5e29863a6e8e41fca3e1dd4440273a72/test-domain/test/a/' \
--form 'signature="722676d6ed1200bbad6f232dfb3e42952f592c56"' \
--form 'expires="1631518899"' \
--form 'max_file_count="50"' \
--form 'max_file_size="524288000"' \
--form 'file=@"/C:/Users/Administrator/AppData/Local/Postman/app-8.12.0/libEGL.dll"'
2
3
4
5
6
# GetObject
Action: GetObject
描述: 下载对象(以返回url地址方式进行下载)。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用GetObject接口时,有如下注意事项:
- 功能等同GeneratePresignedurl,需要请求url地址自行下载
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/GetObject/?Action=GetObject&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=4d7ec07e-8006-11ed-9ee3-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-20T01%3A33%3A27Z&Version=2019-08-08&key=test%2Ftest1.txt&Signature=MNZOtBS%2BJmo%2Bxw7Qj12sN2PkU4M%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "test/test1.txt"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"url": "https://4ab18755406843d98afd21eb9a3ec960.oss-cnbj01.cdsgss.com/cdn-logs/test/test1.txt"
},
"RequestId": "3ddd8f4c-6632-488e-9d1d-416998bef4a4"
}
2
3
4
5
6
7
8
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
url | 字符串 | 是 | 下载地址 |
# GeneratePresignedurl
Action: GeneratePresignedurl
描述: 获取对象下载的url地址(私有存储空间可以获取带签名的url地址)。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用GeneratePresignedurl接口时,有如下注意事项:
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/GeneratePresignedurl/?Action=GeneratePresignedurl&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=4d7ec07e-8006-11ed-9ee3-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-20T01%3A33%3A27Z&Version=2019-08-08&key=test%2Ftest1.txt&Signature=MNZOtBS%2BJmo%2Bxw7Qj12sN2PkU4M%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "test/test1.txt"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"url": "https://4ab18755406843d98afd21eb9a3ec960.oss-cnbj01.cdsgss.com/cdn-logs/test/test1.txt"
},
"RequestId": "3ddd8f4c-6632-488e-9d1d-416998bef4a4"
}
2
3
4
5
6
7
8
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
url | 字符串 | 是 | 下载地址 |
# ListObjects
Action: ListObjects
描述: 查询存储空间下的对象信息(Object)。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
prefix | 字符串 | 是 | 对象模糊搜索条件 |
limit | 字符串 | 是 | 每个最多显示条数 |
pre_marker | 字符串 | 是 | 上一页索引,当前页面第一个对象key |
next_marker | 字符串 | 是 | 下一页索引,当前页面最后一个对象key |
is_versions | 字符串 | 是 | 是否显示多版本信息 |
version_marker | 字符串 | 是 | 版本分页编辑器 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用ListObjects接口时,有如下注意事项:
- 无
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/ListObjects/?Action=ListObjects&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=06d8e192-8007-11ed-a852-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-20T01%3A38%3A38Z&Version=2019-08-08&limit=3&prefix=1&Signature=TddgK1aK9nj4yUvu9%2B9iGs%2FoN84%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"limit": "30", "prefix": "1"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"bucket": {
"id": "7bb541c6-75da-11ed-9cc2-2e526c464a8b",
"bucket_name": "cdn-logs",
"object_num": "8",
"object_used": "1223537"
},
"object_list": [{
"name": "1.txt",
"path": "1.txt",
"is_dir": false,
"is_object": true,
"bytes": 611238,
"content_type": "application/octet-stream",
"last_modified": "2022-12-07T02:56:30.254920"
}],
"is_previous_page": false,
"is_next_page": false
},
"RequestId": "a1413ab6-c578-42d5-bf01-54ea39e208cc"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
bucket | json对象 | 是 | 存储空间信息 |
bucket_name | 字符串 | 是 | 存储空间名称 |
object_num | 数字 | 是 | 对象总数 |
object_used | 数字 | 是 | 对象使用量 |
object_list | json对象 | 是 | 对象信息 |
name | 字符串 | 是 | 对象名称 |
path | 字符串 | 是 | 对象路径 |
is_dir | 字符串 | 是 | 是否为目录 |
is_object | 字符串 | 是 | 是否为对象 |
bytes | 数字 | 是 | 对象大小单位字节 |
content_type | 字符串 | 是 | 对象类型 |
last_modified | 日期 | 是 | 最后修改时间 |
# HeadObject
Action: HeadObject
描述: 查询对象的headers信息。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用HeadObject接口时,有如下注意事项:
- 无
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/HeadObject/?Action=HeadObject&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=25296080-8009-11ed-a982-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-20T01%3A53%3A48Z&Version=2019-08-08&key=test%2Ftest1.txt&Signature=dgX1j2VdzBN1H6eT%2F0xEO8nZsMo%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "test/test1.txt"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"last_modified": "2022-12-20T01:53:35Z",
"content_length": 21,
"content_type": "binary/octet-stream"
},
"RequestId": "59d4f6bd-e7b3-4771-8d36-1b3abbd91b47"
}
2
3
4
5
6
7
8
9
10
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
last_modified | 日期 | 是 | 对象最后修改时间 |
content_length | 字符串 | 是 | 对象长度 |
content_type | 字符串 | 是 | 对象类型 |
# GetObjectTags
Action: GetObjectTags
描述: 查询对象标签。
请求方法: GET
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
key | 字符串 | 是 | 对象名称 |
headers参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Host | 字符串 | 是 | 存储空间名称和存储空间所在节点endpoint地址。示例:{'Host': 'test001.oss-cnbj01.cdsgss.com'} 其中test001未存储空间名称,oss-cnbj01.cdsgss.com为北京节点的endpoint地址 |
注意事项:
使用GetObjectTags接口时,有如下注意事项:
- 无
请求示例:
GET https://gic-ossapi.capitalonline.net/ossapi/GetObjectTags/?Action=GetObjectTags&AccessKeyId=6bb3b2bc72f411ea86d9b21a0a12c617&SignatureMethod=HMAC-SHA1&SignatureNonce=711f3207-7f86-11ed-934d-646c80cc670e&SignatureVersion=1.0&Timestamp=2022-12-19T10%3A18%3A11Z&Version=2019-08-08&Signature=opY7nuDeWAp7%2FSasCQ3jaoKRR6k%3D
--header 'Host':'test001.oss-cnbj01.cdsgss.com'
--header 'Content-Type': 'application/json'
--data '{"key": "support.py"}'
2
3
4
返回示例:
{
"Code": "Success",
"Msg": "Success",
"Data": {
"tags": [{
"key": "key",
"value": "value"
}]
},
"RequestId": "87284624-aebf-4c29-adec-9277d03c5c3e"
}
2
3
4
5
6
7
8
9
10
11
- 响应元素
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
Code | 字符串 | 是 | 状态码;正常状态码为:Success,其他参考异常状态码 |
Msg | 字符串 | 是 | 错误提示,如Code为异常状态码时,该值有错误提示 |
Data | json对象 | 是 | 响应的结果 |
tags | 数组集合 | 是 | 对象标签信息 |
key | 字符串 | 是 | 用户自定义对象标签的key |
value | 字符串 | 是 | 用户自定义对象标签的value |
python调用示例:(需替换自己的ak,sk,bucket名称)
import json
import sys
import time
import uuid
import hmac
from urllib import parse
import base64
from hashlib import sha1
import requests
from openapi import support
from urllib3 import encode_multipart_formdata
# getaway 对象存储api地址
OSSPRODBJURL = 'https://gic-ossapi.capitalonline.net/ossapi'
# 用户密钥,需要替换成自己的
AK = 'xxxxxxxxxxxx'
SK = 'xxxxxxxxxxxx'
# 对象存储节点endpoint
endpoint = "oss-cnbj01.cdsgss.com"
# 对象存储空间
bucket = "test001"
# 通用headers
headers = {
"Host": f'{bucket}.{endpoint}'
}
def percentEncode(str):
# res = parse.quote(str.decode(sys.stdin.encoding).encode('utf8'), '')
res = parse.quote(str, '')
res = res.replace('+', '%20')
res = res.replace('*', '%2A')
res = res.replace('%7E', '~')
# logger.info('percentencode: %s', res)
return res
def get_signature(action, ak, access_key_secret, method, url, param={}):
"""
@params: action: 接口动作
@params: ak: ak值
@params: access_key_secret: ak秘钥
@params: method: 接口调用方法(POST/GET)
@params: param: 接口调用Query中参数(非POST方法Body中参数)
@params: url: 接口调用路径
"""
timestamp = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
D = {
'Action': action,
'AccessKeyId': ak,
'SignatureMethod': 'HMAC-SHA1',
'SignatureNonce': str(uuid.uuid1()),
'SignatureVersion': "1.0",
"Timestamp": timestamp,
'Version': '2019-08-08',
}
if param:
D.update(param)
sortedD = sorted(D.items(), key=lambda x: x[0])
canstring = ''
for k, v in sortedD:
canstring += '&' + percentEncode(k) + '=' + percentEncode(v)
stringToSign = method + '&%2F&' + percentEncode(canstring[1:])
stringToSign = stringToSign.encode('utf-8')
# print(stringToSign)
access_key_secret = access_key_secret.encode('utf-8')
h = hmac.new(access_key_secret, stringToSign, sha1)
signature = base64.encodebytes(h.digest()).strip()
D['Signature'] = signature
url = url + '/?' + parse.urlencode(D)
# print(url)
print('Had got url:', url)
return url
class BucketOperationApi():
'''
存储空间操作类
'''
def __init__(self, AK, SK, header):
self.gatetagurl = OSSPRODBJURL
self.ak = AK
self.sk = SK
self.header = header
def put_bucket(self, bucket_type="public", alias_name=None, tags=None):
action = "PutBucket"
method = "PUT"
body = {
"bucket_type": bucket_type,
}
if alias_name:
body.update({"alias_name": alias_name})
if tags:
body.update({"tags": tags})
print("请求header:%s" % self.header)
print("请求参数:%s" % body)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/PutBucket')
response = requests.put(url, headers=self.header, json=body)
print("创建容器 text:%s" % (response.text))
print("创建容器 header:%s" % (response.headers))
print("创建容器 status_code: %s" % (response.status_code))
class ObjectOperationApi():
def __init__(self, AK, SK, header):
self.gatetagurl = OSSPRODBJURL
self.ak = AK
self.sk = SK
self.header = header
def head_object(self, key, version_id=None):
action = "HeadObject"
method = "GET"
header = {
'Host': 'aaa4.oss-test.cdsgss.com:6002'
}
param = {
"key": key
}
if version_id:
param.update({"version_id": version_id})
print(param)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/HeadObject', param)
response = requests.get(url, headers=self.header, params=param)
print("对象head text:", response.text)
print("对象head header:", response.headers)
print("对象head status_code", response.status_code)
# r = response.json()
# return r
def get_object_meta(self, key, version_id=None):
action = "GetObjectMeta"
method = "GET"
param = {
"key": key
}
if version_id:
param.update({"version_id": version_id})
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl, param)
response = requests.get(url, headers=self.header, params=param)
print("对象meta text:", response.text)
print("对象meta header:", response.headers)
print("对象meta status_code", response.status_code)
r = response.json()
return r
def put_object(self, key, file):
action = "UploadObject"
method = "POST"
from urllib3 import encode_multipart_formdata
file_data = {'files': (key, open(file, 'rb').read()),
'key': key, 'tags':json.dumps([{"key":"value"}])}
encode_data = encode_multipart_formdata(file_data)
print('encode_data:', encode_data)
data = encode_data[0]
self.header.update({'Content-Type': encode_data[1]})
print(self.header)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/UploadObject')
response = requests.post(url, headers=self.header, data=data)
print("对象上传 text:", response.text)
print("对象上传 header:", response.headers)
print("对象上传 status_code", response.status_code)
def put_text(self, key, content=None):
action = "UploadText"
method = "POST"
body = {
"key": key
}
if content:
body.update({"content": content})
print(self.header)
print(body)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/UploadText')
response = requests.post(url, headers=self.header, json=body)
print("对象字符串 text:", response.text)
print("对象字符串 header:", response.headers)
print("对象字符串 status_code", response.status_code)
r = response.json()
return r
def get_object(self, key, version_id=None):
action = "GetObject"
method = "GET"
param = {
"key": key
}
if version_id:
param.update({"version_id": version_id})
# print(header)
print(param)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/GetObject', param)
response = requests.get(url, headers=self.header, params=param)
# with open(file_name, 'wb') as f:
# f.write(response.content)
print("对象 %s 下载 text:%s" % (key, response.text))
print("对象 %s 下载 header:%s" % (key, response.headers))
print("对象 %s 下载 status_code: %s" % (key, response.status_code))
# r = response.json()
# return r
def delete_object(self, key, version_id=None):
action = "DeleteObject"
method = "DELETE"
data = {
"key": key
}
if version_id:
data.update({"version_id": version_id})
# print(header)
print(data)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/DeleteObject')
response = requests.delete(url, headers=self.header, json=data)
print("对象 %s 删除 text:%s" % (key, response.text))
print("对象 %s 删除 header:%s" % (key, response.headers))
print("对象删除 status_code", response.status_code)
# r = response.json()
# return r
def delete_many_objects(self, keys):
action = "DeleteMultipleObjects"
method = "DELETE"
data = {
# keys为list类型
"keys": keys
}
print(self.header)
print(data)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/DeleteMultipleObjects')
response = requests.delete(url, headers=self.header, json=data)
print("对象批量删除 text:", response.text)
print("对象批量删除 header:", response.headers)
print("对象批量删除 status_code", response.status_code)
# r = response.json()
# return r
def delete_prefix_objects(self, prefix):
action = "DeletePrefixObjects"
method = "DELETE"
data = {
"prefix": prefix
}
print(self.header)
print(data)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/DeletePrefixObjects')
response = requests.delete(url, headers=self.header, json=data)
print("对象前缀 %s 删除 text:%s" % (prefix, response.text))
print("对象前缀 %s 删除 header:%s" % (prefix, response.headers))
print("对象前缀 %s 删除 status_code: %s" % (prefix, response.status_code))
def get_sym_link(self, key, version_id=None):
action = "GeneratePresignedurl"
method = "POST"
param = {}
header = {
'Host': 'aaa4.oss-test.cdsgss.com:6002'
}
data = {
"key": key
}
if version_id:
data.update({"version_id": version_id})
print(self.header)
print(data)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/GeneratePresignedurl', param)
response = requests.post(url, headers=self.header, json=data)
print("对象 %s 下载链接 text:%s" % (key, response.text))
print("对象 %s 下载链接 header:%s" % (key, response.headers))
print("对象 %s 下载链接 status_code: %s" % (key, response.status_code))
r = response.json()
return r
def init_multipart_upload(self, key):
'''
步骤1:初始化切片
:param key:
:return:
'''
action = "InitiateMultipartUpload"
method = "POST"
data = {
"key": key
}
print(self.header)
print(data)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl+'/MultipartUpload')
response = requests.post(url, headers=self.header, json=data)
print("对象 %s 切片初始化 text:%s" % (key, response.text))
print("对象 %s 切片初始化 header:%s" % (key, response.headers))
print("对象 %s 切片初始化 status_code: %s" % (key, response.status_code))
# r = response.json()
return response.status_code,response.text
def upload_part(self, upload_id, key, content, part_number):
'''
步骤2:切片上传
:param upload_id:
:param key:
:param content:
:param part_number:
:return:
'''
action = "UploadPart"
method = "POST"
file_data = {'files': (key, content),
"key": key,
"upload_id": upload_id,
"part_number": part_number,
}
encode_data = encode_multipart_formdata(file_data)
data = encode_data[0]
header = {'Host': f'{bucket}.{endpoint}', 'Content-Type': encode_data[1]}
print(header)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl+'/UploadPart')
response = requests.post(url, headers=header, data=data)
print("对象 %s 切片上传 text:%s" % (key, response.text))
print("对象 %s 切片上传 header:%s" % (key, response.headers))
print("对象 %s 切片上传 status_code: %s" % (key, response.status_code))
# r = response.json()
return response.status_code,response.text
def complete_multipart_upload(self, key, upload_id, multipart_info):
'''
步骤3:完成分片上传
:return:
'''
action = "CompleteMultipartUpload"
method = "POST"
data = {'key': key, 'upload_id': upload_id, 'multipart_info': multipart_info}
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl+'/CompleteMultipartUpload')
print(self.header)
print(data)
response = requests.post(url, headers=self.header, json=data)
print("对象 %s 切片上传完成 text:%s" % (key, response.text))
print("对象 %s 切片上传完成 header:%s" % (key, response.headers))
print("对象 %s 切片上传完成 status_code: %s" % (key, response.status_code))
# r = response.json()
return response.status_code,response.text
def multipart_upload(self, key, file):
'''
完整分片上传
:param key:
:return:
'''
status, resp = self.init_multipart_upload(key)
if status == 200:
mulitipart_info = json.loads(resp)
print(mulitipart_info)
upload_id = mulitipart_info.get('Data').get('Upload_Id')
print(upload_id)
i = 1
file = open(file, 'rb')
etags = []
while 1:
content = file.read(10 * 1024 * 1024)
if content == b'':
break
status, part_info = self.upload_part(upload_id=upload_id, key=key, content=content, part_number=i)
print(part_info)
if status == 200:
mulitipart_info = json.loads(part_info)
etags.append({'part_id': mulitipart_info.get('Data').get('part_id'), 'part_number': i})
i += 1
print(i)
status, resp = self.complete_multipart_upload(key, upload_id, etags)
print(resp)
def put_object_tagging(self, key, tags=None):
action = "PutObjectTags"
method = "PUT"
body = {
"key": key,
}
if tags:
body.update({'tags': tags})
print(self.header)
print(body)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/PutObjectTags')
response = requests.put(url, headers=self.header, json=body)
print("对象标签添加 text:%s" % (response.text))
print("对象标签添加 header:%s" % (response.headers))
print("对象标签添加 status_code: %s" % (response.status_code))
# r = response.json()
# return r
def get_object_tagging(self, key, tags=None, version_id=None):
action = "GetObjectTags"
method = "GET"
param = {'key': key}
if tags:
param.update({'tags': tags})
if version_id:
param.update({'version_id': version_id})
print(self.header)
print(param)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/GetObjectTags', param)
response = requests.get(url, headers=self.header)
print("对象标签查看 text:%s" % (response.text))
print("对象标签查看 header:%s" % (response.headers))
print("对象标签查看 status_code: %s" % (response.status_code))
r = response.json()
return r
def delete_object_tagging(self, key):
action = "DeleteObjectTags"
method = "DELETE"
body = {'key': key}
print(self.header)
print(body)
url = get_signature(action, self.ak, self.sk, method, self.gatetagurl + '/DeleteObjectTags')
response = requests.delete(url, headers=self.header, json=body)
print("对象标签删除 text:%s" % (response.text))
print("对象标签删除 header:%s" % (response.headers))
print("对象标签删除 status_code: %s" % (response.status_code))
if __name__ == '__main__':
bucket_service = BucketOperationApi(AK, SK, headers)
# 创建桶
# bucket_service.put_bucket()
object_service = ObjectOperationApi(AK, SK, headers)
# 上传对象
# object_service.put_object(key='support.py', file=r'./support.py')
# 大文件切片上传
object_service.multipart_upload('rclone-v1.60.0-windows-amd64.zip', r'rclone-v1.60.0-windows-amd64.zip')
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443