对象存储API
对象存储API - 签名的算法
每次请求有效时间为15分钟 您可点击下载源代码下载签名算法示例
cos.
说明
字段 |
类型 |
描述 |
ACCESS_KEY |
|
通过用户中心获取的ACCESS KEY。
|
SECRET_KEY |
|
通过用户中心获取的SECRET KEY。
|
SIGNED_STRING |
|
字符串签名; 请求方式(http_method) + \n + 内容md5(content_md5) + \n + 内容类型(content_type) + \n + 请求时间(request_date) + \n + 亚马逊请求头(canonicalized_amz_headers) + \n + 参数(params) + \n +路径(url) 示例:"GET\n\nFri, 09 Oct 2015 04:06:18 GMT\n/test " 加密方式请参考下面的HTTP报头以及生成sign的Python代码示例
|
签名参数
字段 |
类型 |
描述 |
http_method |
String
|
请求方式
|
content_md5 |
String
|
内容md5;如果没有内容,那么请赋值为空字符串,例如:content_md5=""
|
content_type |
String
|
内容类型;如果没有内容,那么请赋值为空字符串,例如:content_type=""
|
request_date |
String
|
请求时间;格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
params 可选 |
String
|
参数字符串;例子:id=1&name=aaa;
|
canonicalized_amz_headers 可选 |
String
|
亚马逊请求头参数;
|
url |
String
|
请求url路径
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Content-Type 可选 |
String
|
内容类型
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
x-amz-acl 可选 |
String
|
亚马逊请求头
|
Content-Length 可选 |
String
|
上传数据内容大小
|
--data-binary 可选 |
String
|
上传数据内容
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
import hmac
import base64
import hashlib
import urllib
from datetime import datetime
def create_sign(secret_key, http_method, content_md5, content_type, params, url, canonicalized_amz_headers=""):
sign_str = create_sign_str(
http_method=http_method,
content_md5=content_md5,
content_type=content_type,
params=params,
url=url,
canonicalized_amz_headers=canonicalized_amz_headers
)
sign = hmac.new(secret_key, sign_str, digestmod=hashlib.sha1)
return base64.b64encode(sign.digest())
def create_sign_str(**params):
http_header_date = str(
datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
)
sign_param_list = [params['http_method'], params['content_md5'], params['content_type'], http_header_date]
if params['canonicalized_amz_headers']:
sign_param_list.extend(params['canonicalized_amz_headers'])
sign_param_list.append(params['url'])
return '\n'.join(sign_param_list)
def create_curl(**params):
http_header_date = str(
datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
)
params["http_header_date"] = http_header_date
curl = 'curl -X %(http_method)s -v -H "Host: cos." -H "Content-Type: %(content_type)s" -H "Date: %(http_header_date)s" -H "x-amz-acl: " -H "Authorization: AWS %(access_key)s:%(sign)s" "https://cos.%(url)s"' % params
return curl
if __name__ == '__main__':
# 必传
secret_key = "b7eb6beb892d5b441c3c17f5d050b81a37d60458b76f64eb1219b18eddb3ec72"
http_method = "DELETE"
content_md5 = ""
content_type = ""
canonicalized_amz_headers = ""
url = "/ning"
# 可选
params = {}
sign = create_sign(
secret_key,
http_method,
content_md5,
content_type,
params,
url,
canonicalized_amz_headers
)
# 创建curl
access_key = "D34CD6F96E1F248BDF191C171CF0BFE7"
curl = create_curl(
http_method=http_method,
content_type=content_type,
access_key=access_key,
sign=sign,
canonicalized_amz_headers=canonicalized_amz_headers,
url=url
)
print curl
对象存储API - 创建存储桶
创建存储桶
/mybucket
curl -X PUT -v
-H "Host: cos."
-H "Date: Fri, 31 Aug 2015 03:10:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:ES6UTYVgmhef2J9MehRdEIOYIPA="
"https://cos./mybucket"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要创建的桶的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Length |
Number
|
内容长度;例如:内容为"hello word"长度为10
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 03:18:36 GMT
Server Apache is not blacklisted
Server: Apache
Content-Length: 0
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 删除存储桶
此功能就是删除URI上的存储桶的名字。在删除存储桶之前必须确保在这个桶里面的所有对象都已经删除,只有这样才能删除该存储桶。
/mybucket
curl -X DELETE -v
-H "Host: cos."
-H "Date: Tue, 01 Sep 2015 02:40:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:QOSy3jUkEH2gml+WIPRGa5U7dY0="
"https://cos./mybucket"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要删除的桶的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 204 No Content
Date: Thu, 08 Oct 2015 03:11:33 GMT
Server Apache is not blacklisted
Server: Apache
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 修改存储桶的权限
修改存储桶的权限
/mybucket?acl
curl -X PUT -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 04:02:36 GMT"
-H "x-amz-acl: public-read-write"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:T7wYggpyzqkV43szIvYAV7USnak="
"https://cos./mybucket?acl"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要修改权限的桶的名字
|
acl |
String
|
acl为要修改权限的参数 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
允许值:
"private" ,
"public-read" ,
"public-read-write" ,
"authenticated-read"
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
x-amz-acl |
String
|
要修改的权限 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
允许值:
"private" ,
"public-read" ,
"public-read-write" ,
"authenticated-read"
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:02:36 GMT
Server Apache is not blacklisted
Server: Apache
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 查询存储桶的权限
查询存储桶的权限
/mybucket?acl
curl -X GET -v
-H "Host: mybucket.cos."
-H "Date: Mon, 21 Sep 2015 06:10:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:vpCW4V4B0ZfmH58k1WtXQwh7DGU="
"https://cos./mybucket?acl"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
Permission |
String
|
权限一共有4种 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
|
XML参数
字段 |
类型 |
描述 |
AccessControlPolicy |
String
|
访问控制权限
|
Owner |
String
|
拥有者
|
ID |
String
|
用户的编号
|
DisplayName |
String
|
默认用户名
|
AccessControlList |
String
|
访问控制列表
|
Grantee |
String
|
被赋予权限的用户组
|
URI |
String
|
URI
|
Permission |
String
|
用户的权限
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:04:52 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="utf-8"?>
<AccessControlPolicy xmlns="http://s3./doc/2006-03-01/">
<Owner>
<ID>user-23</ID>
<DisplayName>test.speedycloud</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs./groups/global/AllUsers</URI>
</Grantee>
<Permission>READ</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
对象存储API - 设置存储桶的版本控制
设置存储桶的版本控制
/mybucket?versioning
curl -X PUT -v
-H "Host: cos."
-H "Date: Mon, 21 Sep 2015 07:30:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:Rdx5b4khkQYRp+05jc1w6hbxsow="
--data-binary @test
"https://cos./mybucket?versioning"
test的内容如下:
<VersioningConfiguration xmlns="http://s3./doc/2006-03-01/">
<Status>Suspended</Status>
</VersioningConfiguration>
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
data-binary |
String
|
要设置的版本状态文件,状态可设置为激活(Enabled)或挂起(Suspended)
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: application/xml
Date: Thu, 17 Mar 2016 08:13:31 GMT
Server Apache/2.4.7 (Ubuntu) is not blacklisted
Server: Apache/2.4.7 (Ubuntu)
Connection #0 to host osc.speedycloud.net left intact
对象存储API - 创建存储桶内对象
"This is a test example"是上传的内容,上传内容的字节数一定要和Content-Length的数相同,若果上传的字节超过所给的字节,后面多余的字节将不能被上传。
/mybucket/key
curl -X PUT -v
-H "Host: cos."
-H "Date: Mon, 21 Sep 2015 10:55:46 GMT"
-H "Content-Length: 22"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:6idNmLHgv5kYK74hmdyWtWDuceM="
-H "Content-Type: application/x-www-form-urlencoded"
--data-binary "This is a test example"
"https://cos./mybucket/key"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
key |
String
|
key 为要存储对象的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Content-Length |
String
|
内容长度;例如:内容为"hello word"长度为10
|
data-binary |
String
|
内容
|
Content-Type |
String
|
上传内容类型
允许值:
"application/x-www-form-urlencoded"
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Length |
Number
|
内容长度
|
Content-Type |
String
|
内容类型
|
ETag |
String
|
上传标签参数
|
Accept-Ranges |
String
|
接受的范围
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 03:31:53 GMT
Server: Apache
Accept-Ranges: bytes
ETag: "fc9c3b44a141adb512f7f7398009d4a3"
Content-Length: 0
Content-Type: application/xml
Connection closed by foreign host.
对象存储API - 删除存储桶内的对象
删除存储桶内的对象
/mybucket/key
curl -X DELETE -v
-H "Host: cos."
-H "Date: Tue, 01 Sep 2015 02:40:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:QOSy3jUkEH2gml+WIPRGa5U7dY0="
"https://cos./mybucket/key"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要删除的桶的名字
|
key |
String
|
key 为要删除的存储对象名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 204 No Content
Date: Thu, 08 Oct 2015 03:11:33 GMT
Server Apache is not blacklisted
Server: Apache
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 删除存储桶内指定版本的对象
删除存储桶内指定版本的对象
/mybucket/key?versionId=versionId
curl -X DELETE -v
-H "Host: cos."
-H "Date: Tue, 01 Sep 2015 02:40:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:QOSy3jUkEH2gml+WIPRGa5U7dY0="
"https://cos./mybucket/key?versionId=o3ExG7VSLfRxQKUPcC3gXiDJ8gmzKCV"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要删除的桶的名字
|
key |
String
|
key 为要删除的存储对象名字
|
versionId |
String
|
versionId 为要删除的存储桶内指定版本的对象的版本ID
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 204 No Content
Date: Thu, 08 Oct 2015 03:11:33 GMT
Server Apache is not blacklisted
Server: Apache
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 修改存储桶内对象的权限
修改存储桶内对象的权限
/mybucket/key?acl
curl -X PUT -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 04:02:36 GMT"
-H "x-amz-acl: public-read-write"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:T7wYggpyzqkV43szIvYAV7USnak="
"https://cos./mybucket/key?acl"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要修改权限的桶的名字
|
key |
String
|
key 为要修改权限的对象的名字
|
acl |
String
|
acl为要修改权限的参数 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
允许值:
"private" ,
"public-read" ,
"public-read-write" ,
"authenticated-read"
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
x-amz-acl |
String
|
要修改的权限 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
允许值:
"private" ,
"public-read" ,
"public-read-write" ,
"authenticated-read"
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:02:36 GMT
Server Apache is not blacklisted
Server: Apache
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 修改存储桶内指定版本的对象的权限
修改存储桶内指定版本的对象的权限
/mybucket/key?acl&versionId=versionId
curl -X PUT -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 04:02:36 GMT"
-H "x-amz-acl: public-read-write"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:T7wYggpyzqkV43szIvYAV7USnak="
"https://cos./mybucket/key?acl&versionId=o3ExG7VSLfRxQKUPcC3gXiDJ8gmzKCV"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要修改权限的桶的名字
|
key |
String
|
key 为要修改权限的对象名称
|
versionId |
String
|
versionId 为要修改的存储桶内指定版本的对象的版本ID
|
acl |
String
|
acl为要修改权限的参数 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
允许值:
"private" ,
"public-read" ,
"public-read-write" ,
"authenticated-read"
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
x-amz-acl |
String
|
要修改的权限 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
允许值:
"private" ,
"public-read" ,
"public-read-write" ,
"authenticated-read"
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:02:36 GMT
Server Apache is not blacklisted
Server: Apache
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 查询存储桶内对象的权限
查询存储桶内对象的权限
/mybucket/key?acl
curl -X GET -v
-H "Host: mybucket.cos."
-H "Date: Mon, 21 Sep 2015 06:10:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:vpCW4V4B0ZfmH58k1WtXQwh7DGU="
"https://cos./mybucket/key?acl"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
key |
String
|
key 为要存储对象的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
Permission |
String
|
权限一共有4种 private :自己拥有全部权限,其他人没有任何权限 public-read :自己拥有全部权限,其他人拥有读权限 public-read-write :自己拥有全部权限,其他人拥有读写权限 authenticated-read :自己拥有全部权限,被授权的用户拥有读权限
|
XML参数
字段 |
类型 |
描述 |
AccessControlPolicy |
String
|
访问控制权限
|
Owner |
String
|
拥有者
|
ID |
String
|
用户的编号
|
DisplayName |
String
|
默认用户名
|
AccessControlList |
String
|
访问控制列表
|
Grantee |
String
|
被赋予权限的用户组
|
URI |
String
|
URI
|
Permission |
String
|
用户的权限
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:04:52 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlPolicy
xmlns="http://s3./doc/2006-03-01/">
<Owner>
<ID>user-26</ID>
<DisplayName>ning.chen</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs./groups/global/AuthenticatedUsers</URI>
</Grantee>
<Permission>READ</Permission>
</Grant>
<Grant>
<Grantee xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>user-26</ID>
<DisplayName>ning.chen</DisplayName>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
对象存储API - 查询存储桶内所有对象
查询存储桶内所有对象
/mybucket
curl -X GET -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 02:47:08 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:ff0yWOb/+DNgTGAzTAjIGtSEokU="
"https://cos./mybucket"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字 如果桶内数据超过1000条,也就是IsTruncated 标签为true 时,若要查看后边的数据,首先调用/mybucket?delimiter=/ 获取本页最后一条,然后调用/mybucket/?delimiter=/&marker=NextMarker ,以获取“NextMarker”标签里的数字,就可以查看了。
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
XML参数
字段 |
类型 |
描述 |
ListBucketResult |
String
|
返回的桶的列表结果
|
Name |
String
|
桶的名字
|
Prefix |
String
|
前缀
|
Marker |
String
|
标记
|
MaxKeys |
String
|
最大查询条数
|
IsTruncated |
String
|
是否被截断
|
Contents |
String
|
存储对象的内容
|
Key |
String
|
桶内存储对象的名字
|
LastModified |
String
|
最后修改时间
|
ETag |
String
|
存储对象的标签参数
|
Size |
String
|
存储对象的大小
|
StorageClass |
String
|
存储的类型
|
Owner |
String
|
拥有者
|
ID |
String
|
用户的编号
|
DisplayName |
String
|
默认用户名
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 09:06:38 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="utf-8"?>
<ListBucketResult xmlns="http://s3./doc/2006-03-01/">
<Name>ning</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>key</Key>
<LastModified>2015-10-08T06:13:14.000Z</LastModified>
<ETag>"4405b757f4726463819fa9e1ba7089b7-2"</ETag>
<Size>160665389</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>user-23</ID>
<DisplayName>weishuo.zhang</DisplayName>
</Owner>
</Contents>
</ListBucketResult>
对象存储API - 查询存储桶的版本信息
查询存储桶的版本信息
/mybucket?versioning
curl -X GET -v
-H "Host: cos."
-H "Date: Mon, 21 Sep 2015 07:30:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:Rdx5b4khkQYRp+05jc1w6hbxsow="
"https://cos./mybucket?versioning"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
Status |
String
|
状态: Enabled 版本激活的状态 Suspended 激活后挂起状态 '' 未激活状态
|
XML参数
字段 |
类型 |
描述 |
AccessControlPolicy |
String
|
访问控制权限
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:08:45 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="utf-8"?>
<VersioningConfiguration xmlns="http://doc.s3./doc/2006-03-01/"></VersioningConfiguration>
对象存储API - 查询存储桶内的对象
查询存储桶内的对象
/mybucket/key
curl -X GET -v
-H "Host: cos."
-H "Date: Tue, 01 Sep 2015 02:10:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:aSasqMXx2UHA6L5LVX9Bk2Y2xpQ= "
"https://cos./mybucket/key"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
key |
String
|
key 为要存储对象的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Length |
Number
|
内容长度
|
ETag |
String
|
上传标签参数
|
Accept-Ranges |
String
|
接受的范围
|
Last-Modified |
String
|
最后修改的时间
|
XML参数
字段 |
类型 |
描述 |
ListBucketResult |
String
|
返回的桶的列表结果
|
Name |
String
|
桶的名字
|
Prefix |
String
|
前缀
|
Marker |
String
|
标记
|
MaxKeys |
String
|
最大查询条数
|
IsTruncated |
String
|
是否被截断
|
Contents |
String
|
存储对象的内容
|
Key |
String
|
桶内存储对象的名字
|
LastModified |
String
|
最后修改时间
|
ETag |
String
|
存储对象的标签参数
|
Size |
String
|
存储对象的大小
|
StorageClass |
String
|
存储的类型
|
Owner |
String
|
拥有者
|
ID |
String
|
用户的编号
|
DisplayName |
String
|
默认用户名
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 03:39:59 GMT
Server Apache is not blacklisted
Server: Apache
Accept-Ranges: bytes
Content-Length: 16
Last-Modified: Thu, 08 Oct 2015 03:32:48 GMT
ETag: "fc9c3b44a141adb512f7f7398009d4a3"
Content-Type: application/x-www-form-urlencoded
Connection #0 to host cos. left intact
this is contents
<?xml version="1.0" encoding="utf-8"?>
<ListBucketResult xmlns="http://s3./doc/2006-03-01/">
<Name>ning</Name>
<Prefix/>
<Marker/>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>key</Key>
<LastModified>2015-10-08T06:13:14.000Z</LastModified>
<ETag>"4405b757f4726463819fa9e1ba7089b7-2"</ETag>
<Size>160665389</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>user-23</ID>
<DisplayName>weishuo.zhang</DisplayName>
</Owner>
</Contents>
</ListBucketResult>
对象存储API - 查询存储桶内所有对象的版本信息
查询存储桶内所有对象的版本信息
/mybucket?versions
curl -X GET -v
-H "Host: cos."
-H "Date: Mon, 21 Sep 2015 07:30:00 GMT"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:Rdx5b4khkQYRp+05jc1w6hbxsow="
"https://cos./mybucket?versions"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
XML参数
字段 |
类型 |
描述 |
AccessControlPolicy |
String
|
访问控制权限
|
ListBucketResult |
String
|
返回的桶的列表结果
|
Name |
String
|
桶的名字
|
Prefix |
String
|
前缀
|
Marker |
String
|
标记
|
MaxKeys |
String
|
最大查询条数
|
IsTruncated |
String
|
是否被截断
|
Contents |
String
|
存储对象的内容
|
Key |
String
|
桶内存储对象的名字
|
LastModified |
String
|
最后修改时间
|
ETag |
String
|
存储对象的标签参数
|
Size |
String
|
存储对象的大小
|
StorageClass |
String
|
存储的类型
|
Owner |
String
|
拥有者
|
ID |
String
|
用户的编号
|
VersionId |
String
|
当前桶内对象的版本ID
|
DisplayName |
String
|
默认用户名
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:08:45 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="utf-8"?>
<ListVersionsResult xmlns="http://s3./doc/2006-03-01/">
<Name>ning</Name>
<Prefix/>
<KeyMarker/>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<DeleteMarker>
<Key>ning</Key>
<VersionId>null</VersionId>
<IsLatest>true</IsLatest>
<LastModified>2016-03-17T01:46:02.000Z</LastModified>
<Owner>
<ID>user-26</ID>
<DisplayName>ning.chen</DisplayName>
</Owner>
</DeleteMarker>
<Version>
<Key>ts</Key>
<VersionId>C9opgY6d8fLD.LlCZoeOl7wZXCSIDYa</VersionId>
<IsLatest>true</IsLatest>
<LastModified>2016-03-17T01:59:04.000Z</LastModified>
<ETag>"92777f8ecfabbae7f683f418c650c2e7"</ETag>
<Size>1225962</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>user-26</ID>
<DisplayName>ning.chen</DisplayName>
</Owner>
</Version>
</ListVersionsResult>
对象存储API - 下载存储桶内对象
下载存储桶内对象
/mybucket/key
curl -X GET -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 03:53:42 GMT "
-H "Authorization: authorization string"
-o "/root/test.txt https://cos./mybucket/key"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要下载数据的桶的名字
|
key |
String
|
key 为要下载数据的存储对象名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Length |
Number
|
内容长度
|
Content-Type |
String
|
内容类型
|
ETag |
String
|
上传标签参数
|
Accept-Ranges |
String
|
接受的范围
|
Last-Modified |
String
|
最后修改的时间
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 03:53:42 GMT
Server Apache is not blacklisted
Server: Apache
Accept-Ranges: bytes
Content-Length: 22
Last-Modified: Thu, 08 Oct 2015 03:32:48 GMT
ETag: "fc9c3b44a141adb512f7f7398009d4a3"
Content-Type: application/x-www-form-urlencoded
{ [data not shown]
100 22 100 22 0 0 1381 0 --:--:-- --:--:-- --:--:-- 1466
Connection #0 to host cos. left intact
对象存储API - 大数据上传(步骤一)
当数据的大小超过100M的时候,我们认为他已经比较大了,这个时候如果采用一次性上传所有的数据,一旦中间出现问题没有上传成功, 就会导致所有的数据全部要重新上传。当文件越大的时候,这个问题带来的影响就会越来越大,所以当文件超过100M的时候我们就应该考虑分段上传。 然而什么是分段上传呢,通俗的讲就是将一个文件分成多个小的文件,然后一个一个的上传。
分段上传可提供以下优势: 1.提高吞吐量—您可以并行上传分段以提高吞吐量。 2.从任何网络问题中快速恢复—较小的分段大小可以将由于网络错误而需重启失败的上传所产生的影响降至最低。 3.暂停和恢复数据元上传—您可以随时上传数据元分段。启动分段上传后,不存在过期期限;您必须显式地完成或中止分段上传。
在得知最终数据元大小之前开始上传—您可以在创建数据元的同时上传数据元。 首先, 我们应该在自己的存储桶上建立一个分段上传的数据起始点。当第一个post请求发出去之后会返回一个uploadId(请把此id保存好,后面的操作将会用到), 此id就是用来确定这个分段上传文件的标识,在接下来的上传和结束中都需要添加进去用来确保分段文件是属于这个整体的。
/mybucket/key?uploads
curl -X POST -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 04:14:46 GMT "
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:A34fuSpMgovlBDTYOVqpze/ErEA="
"https://cos./mybucket/key?uploads"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要大数据上传的桶的名字
|
key |
String
|
key 为要大数据上传的存储对象名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
XML参数
字段 |
类型 |
描述 |
InitiateMultipartUploadResult |
String
|
多部分上传结果
|
Bucket |
String
|
桶的名字
|
Key |
String
|
桶内存储对象的名字
|
UploadId |
String
|
上传文件时生成的字符串id
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:14:46 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="utf-8"?>
<InitiateMultipartUploadResult xmlns="http://s3./doc/2006-03-01/">
<Bucket>mybucket</Bucket>
<Key>key</Key>
<UploadId>2~92AxVSxkjm2qw0nQEp4jy0FssosD6re</UploadId>
</InitiateMultipartUploadResult>
对象存储API - 大数据上传(步骤二)
上传每一小段数据 注意:这里需要将您想要上传的文件分割成您想要上传的份数(分了多少份执行本次操作多少次,每份都会生成一个Etag,步骤三将使用),如果您不知道用什么分割好,可以试试Linux的split命令来分割。
/mybucket/key?partNumber=1&uploadId=2~92AxVSxkjm2qw0nQEp4jy0FssosD6re
curl -X PUT -v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 04:23:09 GMT"
-H "Content-Type: application/x-www-form-urlencoded"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:WAqf5H/CeyPOSDQvZYODVsIWRtg="
--data-binary @xaa
"https://cos./mybucket/key?partNumber=1&uploadId=2~92AxVSxkjm2qw0nQEp4jy0FssosD6re"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
key |
String
|
key 为要存储对象的名字
|
partNumber |
String
|
partNumber为上传的第几份
|
uploadId |
String
|
uploadId为大数据上传(步骤一)所返回的字符串
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
data-binary |
String
|
要上传的第几份的名字,例如@xaa
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Length |
Number
|
内容长度
|
Content-Type |
String
|
内容类型
|
ETag |
String
|
上传标签参数
|
Accept-Ranges |
String
|
接受的范围
|
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 04:23:09 GMT
Server Apache is not blacklisted
Server: Apache
Accept-Ranges: bytes
ETag: "2d58c6607f7a3559fe3c920d55b3eec8"
Content-Length: 0
Content-Type: application/xml
Connection #0 to host cos. left intact
对象存储API - 大数据上传(步骤三)
最后一步, 写下数据上传的完成点来完成上传,将零散的小文件整个成一个整体,变成最初的文件。 注意:此处需要上传的内容里面的ETag参数是在前面上传分片时返回的参数里面给的。要建立一个test.txt文件将Etag放到里边。
/mybucket/key?uploadId=2~92AxVSxkjm2qw0nQEp4jy0FssosD6re
curl –X POST –v
-H "Host: cos."
-H "Date: Thu, 08 Oct 2015 06:13:14 GMT"
-H "Content-Type: application/x-www-form-urlencoded"
-H "Content-Length: 256"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:vL+tFar3aVV7F2sztsQbLm+67Cg="
--data-binary @test.txt
"https://cos./mybucket/key?uploadId=2~92AxVSxkjm2qw0nQEp4jy0FssosD6re"
test.txt的内容如下:
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"2d58c6607f7a3559fe3c920d55b3eec8"</ETag>
</Part>
<Part>
<PartNumber>2</PartNumber>
<ETag>"d127cc3e014dc578c9018a29800e0c9e"</ETag>
</Part>
</CompleteMultipartUpload>
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要大数据上传的桶的名字
|
key |
String
|
key 为要大数据上传的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Content-Length |
String
|
内容长度;例如:内容为"hello word"长度为10
|
data-binary |
String
|
存放Etag的文件(这里为test.txt)
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Type |
String
|
内容类型
|
Transfer-Encoding |
String
|
传输编码
|
Vary |
String
|
变化
|
XML参数
字段 |
类型 |
描述 |
InitiateMultipartUploadResult |
String
|
多部分上传结果
|
Bucket |
String
|
桶的名字
|
Key |
String
|
桶内存储对象的名字
|
Location |
String
|
域名
|
ETag |
String
|
上传标签参数
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 06:13:14 GMT
Server Apache is not blacklisted
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: application/xml
Connection #0 to host cos. left intact
<?xml version="1.0" encoding="utf-8"?>
<CompleteMultipartUploadResult xmlns="http://s3./doc/2006-03-01/">
<Location>cos.</Location>
<Bucket>mybucket</Bucket>
<Key>key</Key>
<ETag>4405b757f4726463819fa9e1ba7089b7-2</ETag>
</CompleteMultipartUploadResult>
对象存储API - 利用对象存储对图片进行缩放
利用对象存储在下载时对图片进行缩放
https://mybucket.cos./key?p=resize:p,50
https://mybucket.cos./key?p=resize:p,50
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为桶的名字
|
key |
String
|
key为对象的名字
|
p |
String
|
缩放示例: https://mybucket.osc./key?p=resize:s,100,200 resize 为缩放固定参数,':' 后边为参数,s 为比例缩放,后边跟数值,100 为宽200 为高,宽和高的值均大于0 ,小于65536 。 缩放示例: https://mybucket.osc./key?p=resize:p,80 resize 为缩放固定参数,p 为百分比缩放,后边跟百分比,80 为百分比, 其值大于0 ,小于等于300 。
|
对象存储API - 利用对象存储对图片进行旋转
利用对象存储在下载时对图片进行旋转
https://mybucket.cos./key?p=rotate:90
https://mybucket.cos./key?p=rotate:90
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为桶的名字
|
key |
String
|
key为对象的名字
|
p |
String
|
旋转示例: https://mybucket.osc./key?p=rotate:90 rotate 为旋转固定参数,':' 后边为参数,为要旋转的角度(大于0 小于360 )。
|
对象存储API - 利用对象存储对图片进行剪切
利用对象存储在下载时对图片进行剪切
https://mybucket.cos./key?p=crop:30,40,50,60
https://mybucket.cos./key?p=crop:30,40,50,60
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为桶的名字
|
key |
String
|
key为对象的名字
|
p |
String
|
剪切示例: https://mybucket.osc./key?p=crop:30,40,50,60 crop 为剪切固定参数,':' 后边为参数,前两个数"30,40" 为裁剪的起始位置坐标,后两个数"50,60" 为裁剪的目标图片的长和宽。
|
对象存储API - 利用对象存储对图片加水印
利用对象存储在下载时对图片进行加水印
https://mybucket_one.osc./key_one?p=water:/mybucket_two/key_two,50,nw
https://mybucket_one.osc./key_one?p=water:/mybucket_two/key_two,50,nw
URL参数
字段 |
类型 |
描述 |
mybucket_one |
String
|
mybucket_one为要加水印图片所在桶的名字
|
key_one |
String
|
key_one为要加水印的图片名称
|
mybucket_two |
String
|
mybucket_two为水印图片所在桶的名字
|
key_two |
String
|
key_two为水印的图片名称
|
p |
String
|
加水印示例: https://mybucket_one.osc./key_one?p=water:/mybucket_two/key_two,50,nw water 为加水印固定参数,':' 后边为参数,/mybucket_two/key_two 为水印图片所存放的桶和对象名,50 为透明度,nw 为水印位置方向 'n' :北,'s' :南,'w' :西,'e' :东,'c' :中,'nw' :西北,'ne' :东北,'sw' :西南,'se' :东南
|
对象存储API - 利用对象存储对图片加文字
利用对象存储在下载时对图片进行加文字
https://mybucket.osc./key?p=annotate:s,green,100,2,red,hello
https://mybucket.osc./key?p=annotate:s,green,100,2,red,hello
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为桶的名字
|
key |
String
|
key为对象的名称
|
p |
String
|
文字示例: https://mybucket.osc./key?p=annotate:s,green,100,2,red,hello annotate 为加文字固定参数,':' 后边为参数,s为位置南,green为颜色(可为颜色英文名 或者#000000 ),100 为字体大小(大于0 ,小于500 ),2 为边框宽度(大于0 ,小于20 ),red 为边框颜色,hello 为想要添加的文字。若字体不加边框,则将边框颜色置为"none" 即可。
|
对象存储API - 利用对象存储对图片多处理
可对图片同时进行缩放、旋转、剪切、加水印、加文字等操作,若无参数或参数有误,将不对图片进行任何处理。
https://mybucket.osc./key?p=resize:100,100|rotate:90|crop:30,40,50,60|water:/mybucket/key,50,nw
https://mybucket.osc./key?p=resize:100,100|rotate:90|crop:30,40,50,60|water:/mybucket/key,50,nw
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为桶的名字
|
key |
String
|
key为对象的名称
|
p |
String
|
多处理示例: p=resize:100,100|rotate:90|crop:30,40,50,60|water:/mybucket/key,50,nw 多个参数用'|' 连接,程序将按照顺序先执行缩放,再对缩放的图片执行旋转,再对旋转的图片进行裁剪。即,上一次处理的输出将作为下一次处理的输入。注意,有些处理可能有逻辑上的顺序,请注意参数顺序。
|
对象存储API - 利用对象存储在上传时进行图片操作
在上传时代理对象存储,将图片处理后后再传至对象存储。用户在上传对象时,在对象的metadata 属性里设置process ,则程序将会按照参数来对图片进行处理,然后上传目标图片。
/mybucket/key
curl -X PUT -v
-H "Host: cos."
-H "Date: Mon, 21 Sep 2015 10:55:46 GMT"
-H "Content-Length: 22"
-H "Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:6idNmLHgv5kYK74hmdyWtWDuceM="
-H "Content-Type: application/x-www-form-urlencoded"
-H "x-amz-meta-process: resize:s,500,500,50|rotate:90|water:/baka/eeee,50,n,50"
--data-binary "This is a test example"
"https://cos./mybucket/key"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为要存储数据的桶的名字
|
key |
String
|
key 为要存储对象的名字
|
curl参数
字段 |
类型 |
描述 |
Host |
String
|
HOST为API的基本调用地址
|
Date |
String
|
格林威治时间 例:Fri, 09 Oct 2015 03:51:14 GMT
|
Authorization |
String
|
用户授权信息;格式:"Authorization: AWS ACCESS_KEY:SIGNED_STRING" 认证示例:Authorization: AWS D34CD6F96E1F248BDF191C171CF0BFE7:R2IovIVqSIAKfrTSFrxrMu0oiKA=
|
Content-Length |
String
|
内容长度;例如:内容为"hello word"长度为10
|
data-binary |
String
|
内容
|
x-amz-meta-process |
String
|
上传图片时需要处理的x-amz-meta-process 参数
|
Content-Type |
String
|
上传内容类型
允许值:
"application/x-www-form-urlencoded"
|
x-amz-meta-process参数
字段 |
类型 |
描述 |
resize |
String
|
缩放参数支持数值和百分比。 按具体大小缩放时: 例子: x-amz-meta-process=resize:s,100,200,50 具体参数: ":"前必须为"resize" "s"表示传入的参数为数值 "100"表示图片长 "200"表示图片宽度,长和宽的值均大于0,小于65536 "50"表示要存储图片的质量,是可选参数,范围在0-100之间。 按百分比缩放时: 例子: x-amz-meta-process=resize:p,80,50 具体参数: ":"前必须为"resize" "p"表示传入的参数为百分比,其值大于0,小于等于300 "50"表示要存储图片的质量,是可选参数,范围在0-100之间。
|
rotate |
String
|
旋转 例子: x-amz-meta-process=rotate:90,50 参数解释: ":"前必须为"rotate" ":"后为要旋转的角度(大于0,小于360) "50"表示要存储图片的质量,是可选参数,范围在0-100之间。
|
crop |
String
|
裁剪 例子: x-amz-meta-process=crop:30,40,50,60,80 参数解释: ":"后前两个数"30,40"为裁剪的起始位置 ":"最后两个数"50,60"为裁剪的目标图片大小 "80"表示要存储图片的质量,是可选参数,范围在0-100之间。
|
water |
String
|
加水印 例子: x-amz-meta-process=water:/bucket/name,10,position,50 参数解释: ":"前必须为"water" ":"后第一个参数"/bucket/name"为水印图片在对象存储中的路径 第二个参数"10"为水印的透明度 第三个参数"position"为水印的位置 "50"表示要存储图片的质量,是可选参数,范围在0-100之间。 注意:只需桶名和对象名,不能包括域名。支持的水印位置有"e"(图片右侧中间位置),"w"(图片左侧中间位置),"n"(图片上侧中间位置),"s"(图片下侧中间位置),"c"(图片正中间位置),"nw"(图片左上角位置),"ne"(图片右上角位置),"sw"(图片左下角位置),"se"(图片右下角位置)。
|
annotate |
String
|
加文字 例子: x-amz-meta-process=annotate:s,green,100,2,red,hello,50 参数解释: ":"前必须为annotate ":"最后两个数"50,60"为裁剪的目标图片大小 ":"后的参数依次为位置(与水印相同),字体颜色(颜色名或颜色16进制代码",字体大小(大于0,小于500),边框宽度(大于0,小于20),边框颜色和想要添加的文字。若字体不加边框,则将边框颜色置为"none"即可 "50"表示要存储图片的质量,是可选参数,范围在0-100之间。
|
many_process |
String
|
多处理 例子: x-amz-meta-process=resize:100,100|rotate:90|crop:30,40,50,60 参数解释: 必须用"|"来分隔开各个子处理。程序将按照顺序先执行缩放,再对缩放的图片执行旋转,再对旋转的图片进行裁剪。即,上一次处理的输出将作为下一次处理的输入。注意,有些处理可能有逻辑上的顺序,请注意参数顺序。
|
Success 200
字段 |
类型 |
描述 |
status |
String
|
请求的状态
|
Date |
String
|
当前时间(格林尼治时间)
|
Server |
String
|
服务器
|
Content-Length |
Number
|
内容长度
|
Content-Type |
String
|
内容类型
|
ETag |
String
|
上传标签参数
|
Accept-Ranges |
String
|
接受的范围
|
HTTP/1.1 200 OK
Date: Thu, 08 Oct 2015 03:31:53 GMT
Server: Apache
Accept-Ranges: bytes
ETag: "fc9c3b44a141adb512f7f7398009d4a3"
Content-Length: 0
Content-Type: application/xml
Connection closed by foreign host.
对象存储API - 利用对象存储压缩css/javascript文件
对css/javascript文件进行压缩,若无参数或参数有误,则将不对css和js文件进行任何操作,直接返回源文件。
https://mybucket.osc./key?p="minifycss"
https://mybucket.osc./key?p="minifycss"
URL参数
字段 |
类型 |
描述 |
mybucket |
String
|
mybucket为桶的名字
|
key |
String
|
key为对象的名称
|
p |
String
|
压缩css/javascript文件示例: p="minifycss" 若有参数,则参数名必须为p。例: 1.minify css文件。p="minifycss"。其中参数p的值必须为且只能为"minifycss"。 2.minify js文件。p="minifyjs"。其中参数p的值必须为且只能为"minifyjs"。
|
对象存储API - 图片鉴黄&鉴恐
针对图片鉴黄(鉴定图片内容是否是黄色不健康和恐怖),下载我们提供的python的SDK包,只需安装调用即可SDK包下载地址,注意:如果图片url填写错误或者图片大于10M,将返回None,或者下载安装我们的终端命令行工具CMD包下载地址,
图片鉴黄&鉴恐
1.下载本工具后,在终端命令行进入本项目目录,运行sudo python setup.py install命令进行安装。
2.然后使用一下操作:
[1]from speedycloud.products import censor
[2]pc = censor.CensorAPI("DEC4EBA08A9D2FE62650A72F2D17A486", "a35b9095d0c00798bec8113213b0a344a2c2c1840ce9a64b29b06f5c6ee4c1d5")
[3]res = pc.censor_g("http://osc./blacktear23/pics/global.png")
返回示例:
[4]res
{u'terror': {u'rate': 0.9334759712219238, u'label': 1, u'review': True, u'name': u'bf01bc9410ff11e6b4e7525400fe959c'}, u'porn': {u'rate': 0.9999164342880249, u'label': 2, u'review': False, u'name': u'bf01bc9410ff11e6b4e7525400fe959c'}}
AccessKey
字段 |
类型 |
描述 |
AccessKey |
String
|
用户的AccessKey 如:DEC4EBA08A9D2FE62650A72F2D17A486
|
SecretKey
字段 |
类型 |
描述 |
SecretKey |
String
|
用户的SecretKey 如:a35b9095d0c00798bec8113213b0a344a2c2c1840ce9a64b29b06f5c6ee4c1d5
|
Success 200
字段 |
类型 |
描述 |
terror |
Json
|
暴恐识别 rate : 准确率 label : 等级分类: 暴恐:0, 非暴恐:1 review : 是否需要人工复查 是:True, 否:False name : 图片名
|
porn |
Json
|
色情识别 rate : 准确率 label : 等级分类: 色情:0, 性感:1, 正常:2 review : 是否需要人工复查 是:True, 否:False name : 图片名
|
|