分享

对象存储API

 天涯军博 2016-10-05

对象存储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   :   图片名

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多