You are on page 1of 85

.......................................................

3
1.

....................................... 4

2.

................................................. 5

3.

4.

5.

2.1

Object ............................................................................................. 5

2.2

Bucket ............................................................................................ 5

2.3

Access Key IDAccess Key Secret ............................................... 5

2.4

Service ........................................................................................... 6

OSS ............................................. 7
3.1

OSS ............................................................................... 7

3.2

Object ......................................................... 7

3.3

OSS ................................................................................... 8

3.4

(Server Access Logging).......................................... 8

3.5

....................................................................... 11

................................................ 13
4.1

Authentication ................................................13

4.2

Head .....................................................................13

4.3

URL .....................................................................18

4.4

Bucket ...........................................................................19

............................................ 21
5.1

5.2

HTTP .......................................................................22
5.1.1

Common Request Headers ....................22

5.1.2

Common Response Headers ..................22

Service .....................................................................23
5.2.1

5.3

GetService (ListBucket) ...................................................23

Bucket ......................................................................26
5.3.1

Delete Bucket ..................................................................26

5.3.2

Get Bucket (List Object) ..................................................28

5.3.3

Get Bucket Acl.................................................................36


1

5.4

5.5

6.

5.3.4

Put Bucket .......................................................................38

5.3.5

Put Bucket Acl .................................................................40

Object ..........................................................................42
5.4.1

Copy Object .....................................................................42

5.4.2

Delete Object ...................................................................46

5.4.3

Delete Multiple Objects ...................................................47

5.4.4

Get Object ........................................................................51

5.4.5

Head Object .....................................................................55

5.4.6

Put Object ........................................................................57

Multipart Upload ......................................................60


5.5.1

Initiate Multipart Upload ..................................................60

5.5.2

Upload Part ......................................................................63

5.5.3

Complete Multipart Upload ..............................................65

5.5.4

Abort Multipart Upload ....................................................69

5.5.5

List Multipart Uploads .....................................................70

5.5.6

List Parts ..........................................................................74

OSS .......................................... 78
6.1

OSS ...................................................................78

6.2

OSS ..............................................................................79

6.3

OSS ...........................................................81

6.4

OSS .......................................................................82

6.5

OSS ............................................84


OSS OSS
API

1.
OpenStorageService OSS
REST
WEB
OSS Java Python PHPC# SDK
OSS

OSS http://oss.aliyuncs.com
OSS 1http://oss-internal.aliyuncs.com
OSS web http://oss.aliyun.com/

OSS

2.
2.1 Object
OSS Object Object
5TB Object keymeta datakey Object meta
object name-value data Object

Object
UTF-8
1-1023
/\

2.2 Bucket
Bucket OSS
Bucket OSS
OSS Object Bucket
Bucket 10 Bucket
Bucket Object

Bucket
-

3-63

2.3 Access Key IDAccess Key Secret


OSS Access Key ID Access Key Secret
5

ID OSS

2.4 Service
OSS
Bucket

3. OSS
3.1 OSS
OSS OSS

Bucket

Bucket

Object

Multi-Part Upload

If-Modified-Since If-Match HTTP

3.2 Object
bucket
object object
http:// < bucket >.oss.aliyuncs.com/< object >

oss-example bucket "aliyun-log.png"


objectcontent-type image/png object URL
http://oss-example.oss.aliyuncs.com /aliyun-logo.png

http://oss-example.oss.a
om/aliyun-logo.png
bu
host
URL HTML
<img src="http://oss-example.oss.aliyuncs.com/aliyun-logo.png"/>

3.3 OSS
OSS OSS
OSS HTTP header referer
OSS http://oss.aliyun.com bucket referer
referer oss-example
bucket referer http://www.aliyun.com referer
http://www.aliyun.com oss-example bucket Object

1) URL Object
Header Authorization
2) bucket referer
3) Referer *
4) referer
5) referer
6) referer referer
referer
7) referer referer

8) Bucket privatepublic-readpublic-read-write referer

OSS

3.4 2(Server Access Logging)


OSS Bucket OSS
2

OSS Bucket bucket bucket OSS

Bucket
8

http://oss.aliyun.com bucket
bucket BucketSource BucketOSS
bucket
Object bucket BucketTarget Bucket

object
<TargetPrefix><SourceBucket>-YYYY-mm-DD-HH-MM-SS-UniqueString

TargetPrefix YYYY, mm, DD, HH, MM SS


Object
UniqueString OSS OSS
Object
MyLog-oss-example-2012-09-10-04-00-00-0000

MyLog- Object oss-example bucket


2012-09-10-04-00-00 Object 0000
OSS

LOG

Remote IP

119.140.142.11


IP Proxy

Reserved

Reserved

Time

[02/May/2012:00:00:04 +0800]

OSS

Request-URI

GET /aliyun-logo.png HTTP/1.1

URI( query-string)

HTTP Status

200

OSS HTTP

SentBytes

5576

OSS

RequestTime (ms)

71

Referrer

http://oss.aliyun.com

HTTP Referrer

User-Agent

curl/7.15.5

HTTP User-Agent

HostName

oss-example.oss.aliyuncs.com

Request ID

505B01695037C2AF032593A4

UUID

LoggingFlag

true

Reserved

Requester Aliyun ID

1657136103983691

ID-

Operation

GetObject

Bucket

oss-example

Bucket

Key

/aliyun-logo.png

Key

ObjectSize

5576

Object

Server Cost Time (ms)

17

OSS

Error Code

NoSuchBucket

OSS

Request Length

302

Byte

UserID

1657136103983691

Bucket ID

Delta DataSize

280

Bucket -

1) Bucket Bucket
2) TargetPrefix object
3) bucket bucket Bucket Bucket
bucket LOG bucket
TargetPrefix
4) OSS bucket Log
LOG LOG

5) OSS Log UniqueString OSS


UUID
6) OSS bucket Log PUT
LOG Object
LOG
10

7) OSS x- query-string query-string


LOG
URL x- query-string
http://oss-example.oss.aliyuncs.com/aliyun-logo.png
http://oss-example.oss.aliyuncs.com/aliyun-logo.png?x-user=admin

OSS LOG
x-user=admin
8) OSS LOG -

9) OSS LOG Log

3.5
OSS Server-Side
EncryptionOSS
OSS
HTTP Header
Object
Object OSS

OSS Object Object


Put Object x-oss-server-side-encryption
HTTP Header AES256 Object

Put Object
Copy Object
Initiate Multipart Upload
Put Object
PUT /ObjectName HTTP/1.1
Content-LengthContentLength
11

Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
x-oss-server-side-encryption: AES256
Date: GMT Date
Authorization: SignatureValue

[object data]

Get Object OSS HTTP


HTTP/1.1 200 OK
x-oss-request-id: 3a89276f-2e2d-7965-3ff9-51c875b99c41
Date: Fri, 24 Feb 2012 06:38:30 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Content-Type: image/jpg
Content-Length: 344606
x-oss-server-side-encryption: AES256
Server: AliyunOSS

[344606 bytes of object data]

1) Object Group
2) Put ObjectCopy Object Initiate Multipart Upload
OSS x-oss-server-side-encryption OSS
HTTP 400InvalidArgument
3) OSS AES256
x-oss-server-side-encryption OSS HTTP 400
InvalidEncryptionAlgorithmError
4) Object API OSS
x-oss-server-side-encryption
Put Object
Copy Object
Initiate Multipart Upload
Upload Part
Complete Multipart Upload
Get Object
12

Head Object

4.
4.1 Authentication
OSS Access Key ID/ Access Key Secret
Access Key ID Access Key Secret
OSS Access Key Secret
OSS Access Key Access Key ID Access Key
Secret active/inactive

active ID

inactive ID

0 2 active inactive ID
http://oss.aliyun.com/ OSS ID
OSS OSS
Access Key Secret
OSS Access Key ID Access Key
Secret
OSS HTTP
403

4.2 Head
HTTP Authorization Head
(Signature)

Authorization
"Authorization: OSS " + Access Key Id + ":" + Signature
13

Signature = base64(hmac-sha1(VERB + "\n"


+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ DATE + "\n"
+ CanonicalizedOSSHeaders
+ CanonicalizedResource))

CONTENT-MD5 MD5

CONTENT-TYPE

DATE HTTP1.1 GMT

CanonicalizedOSSHeaders http object meta

CanonicalizedResource OSS

DATE CanonicalizedResource DATE


OSS 15 OSS HTTP
403

CanonicalizedOSSHeaders
x-oss- HTTP Header CanonicalizedOSSHeaders

1)

x-oss- HTTP X-OSS-Meta-Name: TaoBao


x-oss-meta-name: TaoBao

2)

HTTP

3)

RFC 2616, 4.2


x-oss-meta-name TaoBao Alipay
x-oss-meta-name:TaoBao,Alipay

4)

x-oss-meta-name: TaoBao,Alipay
x-oss-meta-name:TaoBao,Alipay

5)

\n CanonicalizedOSSHeader

CanonicalizedResource
OSS CanonicalizedResource

1)

CanonicalizedResource

14

2)

OSS /BucketName/ObjectName ObjectName

3)

(sub-resource)3
& CanonicalizedResource
CanonicalizedResource /BucketName/ObjectName?acl &uploadId=UploadId

4)

(query string)(override) header4


&
CanonicalizedResource CanonicalizedResource
/BucketName/ObjectName?acl&response-content-type=ContentType & uploadId =UploadId

PUT /nelson HTTP/1.0


Content-Md5: c8fdb181845a4ca6b8fec737b3581d76
Content-Type: text/html
Date: Thu, 17 Nov 2005 18:49:58 GMT
Host: oss-example.oss.aliyuncs.com
X-OSS-Meta-Author: foo@bar.com
X-OSS-Magic: abracadabra

AccessID "44CF9590006BF252F707"
Access Key Secret "OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV"
(Signature):
python
import base64
import hmac
import sha
h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"PUT\nc8fdb181845a4ca6b8fec737b3581d76\ntext/html\nThu,

17 Nov

2005 18:49:58

GMT\nx-oss-magic:abracadabra\nx-oss-meta-author:foo@bar.com\n/oss-example/nelson", sha)
base64.encodestring(h.digest()).strip()

(Signature)dZpCvvKgxiFw6wvMHHj5g3W6STM=
Authorization
PUT /nelson HTTP/1.0
Authorization: OSS 44CF9590006BF252F707: dZpCvvKgxiFw6wvMHHj5g3W6STM=
Content-Md5: c8fdb181845a4ca6b8fec737b3581d76
Content-Type: text/html
Date: Thu, 17 Nov 2005 18:49:58 GMT

OSS aclgroupuploadIdpartNumberuploadslogging

4 OSS override response-content-type, response-content-language,


response-expires,

reponse-cache-control, response-content-disposition, response-content-encoding


15

Host: oss-example.oss.aliyuncs.com
X-OSS-Meta-Author: foo@bar.com
X-OSS-Magic: abracadabra

1) UTF-8
UTF-8 Access Key Secret
2) RFC 2104 (http://www.ietf.org/rfc/rfc2104.txt)
HMAC-SHA1 Key Access Key Secret
3) content-type content-md5
\n
4) HTTP header x-oss- header
HTTP header OSS
x-oss-magic
5) x-oss- head
head
head
head name value
Head \n Head
CanonicalizedOSSHeaders

1) AccessID inactive 403 Forbidden


InvalidAccessKeyId
2) Authorization 400 Bad Request
InvalidArgument
3) OSS HTTP 1.1 GMT

date1 = 2DIGIT SP month SP 4DIGIT; day month year (e.g., 02 Jun 1982)
date2 = 2DIGIT "-" month "-" 2DIGIT; day-month-year (e.g., 02-Jun-82)
date3 = month SP ( 2DIGIT | ( SP 1DIGIT )); month day (e.g., Jun 2) 2
16

2 DIGITJun 2
2 Jun 19822-Jun-82
4) Date 403
Forbidden AccessDenied
5) OSS 15
403 ForbiddenRequestTimeTooSkewed
6) AccessID active OSS
403 Forbidden response
OSS response

<?xml version="1.0" ?>


<Error>
<Code>
SignatureDoesNotMatch
</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and
signing method.
</Message>
<StringToSignBytes>
47 45 54 0a 0a 0a 57 65 64 2c 20 31 31 20 4d 61 79 20 32 30 31 31 20 30 37 3a 35 39 3a 32 35 20 47
4d 54 0a 2f 75 73 72 65 61 6c 74 65 73 74 3f 61 63 6c
</StringToSignBytes>
<RequestId>
1E446260FF9B10C2
</RequestId>
<HostId>
oss.aliyuncs.com
</HostId>
<SignatureProvided>
y5H7yzPsA/tP4+0tH1HHvPEwUv8=
</SignatureProvided>
<StringToSign>
GET
Wed, 11 May 2011 07:59:25 GMT
/oss-example?acl
</StringToSign>
17

<OSSAccessKeyId>
AKIAIVAKMSMOY7VOMRWQ
</OSSAccessKeyId>
</Error>

4.3 URL
Authorization Head URL
URL

URL :
http://oss-example.oss.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=44CF9590006BF252F707&Expires=1141
889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D

URL SignatureExpiresOSSAccessKeyId
Expires UNIX UTC 1970 1 1
wiki URL OSS
URL Expires
1141889060 60 URL
Expires 1141889120
OSS Head URL

1) URL Date Expires


2) URL Head
3) SignatureExpiresOSSAccessKeyId

4) Expires

URL python
import base64
import hmac
18

import sha
import urllib
h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"GET\n\n\n1141889120\n/oss-example/oss-api.pdf",
sha)
urllib.quote_plus (base64.encodestring(h.digest()).strip())

1) URL

2) PUT GET URL


3) URL SignatureExpiresOSSAccessKeyId
SignatureExpiresOSSAccessKeyId
403 ForbiddenAccessDenied
4) Expires 403 Forbidden
AccessDenied
5) OSS 15
403 ForbiddenRequestTimeTooSkewed
6) Expires 403 ForbiddenAccessDenied
7) URL SignatureExpiresOSSAccessKeyId
Head 400 Bad Request
InvalidArgument
8) Date Expires content-type
content-md5 Header Data
Data

4.4 Bucket
OSS Bucket Bucket
public-read-writepublic-read private

public-read-write bucket
19

object PUTGet Delete bucket

public-read bucket bucket Object

Put Delete Object bucket


object Get Object

private bucket bucket Object

PutDelete Get Object Bucket Object


Bucket Bucket OSS
Bucket private Bucket
OSS Put Bucket Acl Bucket

:
Put Bucket Acl
Get Bucket Acl

20

5.
OSS OSS

OSS

21

5.1 HTTP
5.1.1

Common Request Headers

OSS RESTful
OSS

Authorization

Content-Length

RFC 2616HTTP

OSS

Content-Type

RFC 2616HTTP

OSS

Date

HTTP 1.1GMTWed, 05 Sep. 2012 23:00:00 GMT

Host<bucketname>.oss.aliyuncs.com

Host

5.1.2

Common Response Headers

OSS RESTful
OSS

Content-Length

RFC 2616HTTP

OSS
22

OSS

Connection

open | close

Date

HTTP 1.1GMTWed, 05 Sep. 2012 23:00:00 GMT

ETag (entity tag) ObjectObject

ETag

Put ObjectObjectETagMD5
ObjectETagUUIDETagObject

Response

Server

AliyunOSS
x-oss-request-id

x-oss-request-idAliyun OSSresponseUUID
OSSOSS

5.2 Service
5.2.1

GetService (ListBucket)

Get Bucket/

GET / HTTP/1.1
Host: oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

(Response Elements)

Bucket

bucket.
23


Name, CreationDate
ListAllMyBucketsResult.Buckets
Buckets

Bucket

Bucket
ListAllMyBucketsResult

CreateDate

Bucket
(yyyy-mm-ddThh:mm:ss.timezone, e.g.,
2011-12-01T12:27:13.000Z)
ListAllMyBucketsResult.Buckets.Bucket

DisplayName

Bucket (ID)

ListAllMyBucketsResult.Owner

ID

BucketID

ListAllMyBucketsResult.Owner

ListAllMyBucketsResult

Get Service

: Owner, Buckets
None

Name

Bucket

ListAllMyBucketsResult.Buckets.Bucket

Owner

Bucket

ListAllMyBucketsResult

1) GetService API
2) 403 Forbidden
AccessDenied

GET / HTTP/1.1
Host: oss.aliyuncs.com
Date: Fri, 24 Feb 2012 02:58:28 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:MiorP5BDFDhKAn44wDnkSSv2Z94=

24

HTTP/1.1 200 OK
x-oss-request-id: 60633d3c-1293-0d72-7739-759423f02d36
Date: Fri, 24 Feb 2012 02:58:28 GMT
Content-type: application/xml
Content-Length: 685
Connection: close
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>


<ListAllMyBucketsResult xmlns=http://doc.oss.aliyuncs.com>
<Owner>
<ID>00220120222</ID>
<DisplayName>oss_doc</DisplayName>
</Owner>
<Buckets>
<Bucket>
<Name>multipart_upload</Name>
<CreationDate>2012-02-22T08:25:07.000Z</CreationDate>
</Bucket>
<Bucket>
<Name>my_oss</Name>
<CreationDate>2012-02-24T02:53:26.000Z</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>

Get Bucket (List Object)


Get Object

25

5.3 Bucket
5.3.1

Delete Bucket

Delete Bucket Bucket

DELETE / HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

1) Bucket 404 no content NoSuchBucket


2) OSS Bucket
3) Bucket 409 Conflict
BucketNotEmpty
4) Bucket Bucket
Bucket 403 Forbidden AccessDenied

DELETE / HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 05:31:04 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:ceOEyZavKY4QcjoUWYSpYbJ3naA=

HTTP/1.1 204 No Content


x-oss-request-id: 7faf664d-0cad-852e-4b38-2ac2232e7e7f
Date: Fri, 24 Feb 2012 05:31:04 GMT
Connection: close
Content-Length: 0
Server: AliyunOSS

26

Put Bucket
Delete Object

27

5.3.2

Get Bucket (List Object)

Get Bucket list Bucket Object

GET / HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

(Request Parameters)
GetBucketListObject prefixmarkerdelimiter max-keys
list

delimiter

Object
delimiter object CommonPrefixes

marker

marker

max-keys

object 1000max-keys
1000

100

prefix

object key prefix prefix


key prefix

(Response Elements)

Contents

Object meta

ListBucketResult

CommonPrefixes

delimiter OSS
CommonPrefixes delimiter
28

object

ListBucketResult
Delimiter

Object
delimiter object CommonPrefixes

ListBucketResult

DisplayName

Object

ListBucketResult.Contents.Owner

ETag

ETag (entity tag) ObjectObject


Put ObjectObjectETagMD5
ObjectETagUUIDETagObject

ListBucketResult.Contents

ID

BucketID

ListBucketResult.Contents.Owner

IsTruncated

truefalse

true | false
ListBucketResult

Key

Object Key.

ListBucketResult.Contents

LastModified

Object

ListBucketResult.Contents

ListBucketResult

Get Bucket .

Name, Prefix, Marker, MaxKeys, Delimiter, IsTruncated, Nextmarker,


Contents
None

Marker

Get BucketList Object

ListBucketResult

MaxKeys

ListBucketResult

Name

Bucket

29

ListBucketResult
Owner

Bucket

DisplayName, ID
ListBucketResult

Prefix

ListBucketResult
Object

Size

ListBucketResult.Contents
StorageClass

Object Standard

ListBucketResult.Contents

1) Object meta GetBucket


2) List keys Object Group
3) Bucket Bucket
404 Not Found NoSuchBucket
4) Bucket 403 Forbidden
AccessDenied
5) max-keys listing
<NextMarker> listing markerNextMarker
list
6) marker marker
max-keys 0 1000
400 Bad Request InvalidArgument
7) prefixmarkerdelimiter 400 Bad Request
InvalidArgument
8) prefixmarker 1024
9) prefix prefix
delimiter /

30

CommonPrefixes
bucket object :
fun/test.jpg fun/movie/001.avi fun/movie/007.avi
prefix fun/ object delimiter
/fun/test.jpgfun/movie/

bucketmy_oss 4 object
oss.jpg
fun/test.jpg
fun/movie/001.avi
fun/movie/007.avi

GET / HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:BC+oQIXVR2/ZghT7cGa0ykboO4M=

HTTP/1.1 200 OK
x-oss-request-id: 248c6483-2a95-622e-3022-ebe65d8aad5f
Date: Fri, 24 Feb 2012 08:43:27 GMT
Content-Type: application/xml
Content-Length: 1866
Connection: close
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>


<ListBucketResult xmlns=http://doc.oss.aliyuncs.com>
<Name>oss-example</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>100</MaxKeys>
<Delimiter></Delimiter>
<IsTruncated>false</IsTruncated>
31

<Contents>
<Key>fun/movie/001.avi</Key>
<LastModified>2012-02-24T08:43:07.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user-example</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>fun/movie/007.avi</Key>
<LastModified>2012-02-24T08:43:27.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user-example</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>fun/test.jpg</Key>
<LastModified>2012-02-24T08:42:32.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user-example</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>oss.jpg</Key>
<LastModified>2012-02-24T06:07:48.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
32

<ID>00220120222</ID>
<DisplayName>user-example</DisplayName>
</Owner>
</Contents>
</ListBucketResult>

( Prefix )
GET /?prefix=fun HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:BC+oQIXVR2/ZghT7cGa0ykboO4M=

HTTP/1.1 200 OK
x-oss-request-id: 25cb535f-1feb-1e90-2f22-12176bcb563e
Date: Fri, 24 Feb 2012 08:43:27 GMT
Content-Type: application/xml
Content-Length: 1464
Connection: close
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>


<ListBucketResult xmlns=http://doc.oss.aliyuncs.com>
<Name>oss-example</Name>
<Prefix>fun</Prefix>
<Marker></Marker>
<MaxKeys>100</MaxKeys>
<Delimiter></Delimiter>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>fun/movie/001.avi</Key>
<LastModified>2012-02-24T08:43:07.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user_example</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>fun/movie/007.avi</Key>
33

<LastModified>2012-02-24T08:43:27.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user_example</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>fun/test.jpg</Key>
<LastModified>2012-02-24T08:42:32.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user_example</DisplayName>
</Owner>
</Contents>
</ListBucketResult>

( prefix delimiter )
GET /?prefix=fun/&delimiter=/ HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:DNrnx7xHk3sgysx7I8U9I9IY1vY=

HTTP/1.1 200 OK
x-oss-request-id: 0b05f9b1-539e-a858-0a81-9ca13d8a8011
Date: Fri, 24 Feb 2012 08:43:27 GMT
Content-Type: application/xml
Content-Length: 712
Connection: close
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>


<ListBucketResult xmlns=http://doc.oss.aliyuncs.com>
<Name>oss-example</Name>
<Prefix>fun/</Prefix>
34

<Marker></Marker>
<MaxKeys>100</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>fun/test.jpg</Key>
<LastModified>2012-02-24T08:42:32.000Z</LastModified>
<ETag>&quot;5B3C1A2E053D763E1B002CC607C5A0FE&quot;</ETag>
<Type>Normal</Type>
<Size>344606</Size>
<StorageClass>Standard</StorageClass>
<Owner>
<ID>00220120222</ID>
<DisplayName>user_example</DisplayName>
</Owner>
</Contents>
<CommonPrefixes>
<Prefix>fun/movie/</Prefix>
</CommonPrefixes>
</ListBucketResult>

Put Bucket
Put Object
Get Object

35

5.3.3

Get Bucket Acl

Get Bucket ACL Bucket

GET /?acl HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

(Response Elements)

AccessControlList

ACL

AccessControlPolicy

AccessControlPolicy

Get Bucket ACL

None

DisplayName

Bucket.(ID)

AccessControlPolicy.Owner

Grant

Bucket ACL

private | public-read | public-read-write


AccessControlPolicy.AccessControlList

ID

BucketID

AccessControlPolicy.Owner

Owner

Bucket

AccessControlPolicy

1) Bucket Get Bucket ACL

GET /?acl HTTP/1.1


36

Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 04:11:23 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:CTkuxpLAi4XZ+WwIfNm0FmgbrQ0=

HTTP/1.1 200 OK
x-oss-request-id: 6f720c98-40fe-6de0-047b-e7fb08c4059b
Date: Fri, 24 Feb 2012 04:11:23 GMT
Content-Length: 253
Content-Tupe: application/xml
Connection: close
Server: AliyunOSS

<?xml version="1.0" ?>


<AccessControlPolicy>
<Owner>
<ID>00220120222</ID>
<DisplayName>user_example</DisplayName>
</Owner>
<AccessControlList>
<Grant>public-read</Grant>
</AccessControlList>
</AccessControlPolicy>

Put Bucket
Get Bucket Acl

37

5.3.4

Put Bucket

PutBucket Bucket

PUT / HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

1) Bucket 200 OK
2) Bucket 409 Conflict
BucketAlreadyExists
3) Bucket 400 Bad Request
InvalidBucketName
4) PUT Bucket 403
Forbidden AccessDenied
5) PutBucket bucket 10 400
Bad Request TooManyBuckets
6) BucketPrivate

PUT / HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 03:15:40 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:77Dvh5wQgIjWjwO/KyRt8dOPfo8=

HTTP/1.1 200 OK
x-oss-request-id: 7c9e8b71-3c6a-1b7d-2361-093f1af5f5e9
Date: Fri, 24 Feb 2012 03:15:40 GMT
Location: /oss-example
Content-Length: 0
Connection: close
38

Server: AliyunOSS

Get Bucket (List Object)


Delete Bucket
Put Object

39

5.3.5

Put Bucket Acl

Put Bucket ACL Bucket Bucket


public-read-writepublic-read privatePut Bucket ACL Put
x-oss-acl Bucket
200

PUT / HTTP/1.1
x-oss-acl: Permission
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

1) bucket
bucket bucket
2) Put Bucket 403
Forbidden AccessDenied
3)
x-oss-acl bucket
bucket

PUT / HTTP/1.1
x-oss-acl: public-read
Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=

HTTP/1.1 200 OK
x-oss-request-id: 248c6483-2a95-622e-3022-ebe65d8aad5f
Date: Fri, 24 Feb 2012 03:21:12 GMT
Content-Length: 0
Connection: close
40

Server: AliyunOSS

400 Bad Request

HTTP/1.1 400 Bad Request


x-oss-request-id: 4e63c87a-71dc-87f7-11b5-583a600e0038
Date: Fri, 24 Feb 2012 03:55:00 GMT
Content-Length: 309
Content-Type: text/xml; charset=UTF-8
Connection: close
Server: AliyunOSS

<?xml version="1.0" ?>


<Error xmlns=http://doc.oss.aliyuncs.com>
<Code>
InvalidArgument
</Code>
<Message>
</Message>
<ArgumentValue>
error-acl
</ArgumentValue>
<ArgumentName>
x-oss-acl
</ArgumentName>
<RequestId>
4e63c87a-71dc-87f7-11b5-583a600e0038
</RequestId>
<HostId>
oss.aliyuncs.com
</HostId>
</Error>

Put Bucket
Get Bucket Acl

41

5.4 Object
5.4.1

Copy Object

OSS object object PUT


OSS PUT x-oss-copy-source
OSS Copy
object

PUT / /ObjectName HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-copy-source: /SourceBucketName/SourceObjectName

Header

x-oss-copy-source

x-oss-copy-source-if-m

ObjectETAGETAG412

atch

HTTP

x-oss-copy-source-if-no

Object

ne-match

412 HTTP

x-oss-copy-source-if-un

modified-since

200 OK412 precondition failed

x-oss-copy-source-if-m

Object412

odified-since

HTTP

42

x-oss-metadata-directiv

COPYREPLACECOPYObjectmeta

ObjectREPLACEObjectmeta
meta400 HTTPCOPY
Objectx-oss-server-side-encryptionmeta

COPY
COPY | REPLACE

x-oss-server-side-encry

ossobject

ption

AES256

(Response Elements)

CopyObjectResult

Copy Object

ObjectETag

ETag

CopyObjectResult
LastModified

Object

CopyObjectResult

1) Object meta
2) Object Object
x-oss-metadata-directive Object meta
3) OSS Header Get
Object
4) Object
5) Object Bucket Get
Object Bucket Put

6) x-oss-

43

7) Object Group
8) x-oss-server-side-encryption
AES256 Object
Object
x-oss-server-side-encryption Object
Object x-oss-server-side-encryption
Object x-oss-server-side-encryption
Object
Object
9) x-oss-metadata-directive COPY
Object x-oss-server-side-encryption Object
COPY x-oss-server-side-encryption

10) Object group Object Object group


x-oss-server-side-encryption 400
InvalidArgument
11) x-oss-server-side-encryption
AES256 400 InvalidEncryptionAlgorithmError

PUT /copy_oss.jpg HTTP/1.1


Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 07:18:48 GMT
x-oss-copy-source: /oss-example/oss.jpg
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:gmnwPKuu20LQEjd+iPkL259A+n0=

HTTP/1.1 200 OK
x-oss-request-id: 3dfb2597-72a0-b3f7-320f-8b6627a96e68
Content-Type: application/xml
Content-Length: 193
Connection: close
Date: Fri, 24 Feb 2012 07:18:48 GMT
Server: AliyunOSS
44

<?xml version="1.0" encoding="UTF-8"?>


<CopyObjectResult xmlns=http://doc.oss.aliyuncs.com>
<LastModified>Fri, 24 Feb 2012 07:18:48 GMT</LastModified>
<ETag>"5B3C1A2E053D763E1B002CC607C5A0FE"</ETag>
</CopyObjectResult>

Put Object
Get Object
Delete Object

45

5.4.2

Delete Object

DeleteObject Object

DELETE /ObjectName HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

1) DeleteObject Object
2) Object OSS 204 No Content
3) Bucket 404 Not Found

DELETE /copy_oss.jpg HTTP/1.1


Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 07:45:28 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:zUglwRPGkbByZxm1+y4eyu+NIUs=

HTTP/1.1 204 NoContent


x-oss-request-id: 1a61ecd1-5de8-4e2e-20b5-c66e135bc379
Date: Fri, 24 Feb 2012 07:45:28 GMT
Content-Length: 0
Connection: close
Server: AliyunOSS

Put Object
Get Object
Delete Multiple Objects

46

5.4.3

Delete Multiple Objects

Delete Multiple Object HTTP


Bucket ObjectDelete Multiple Object
1000 Object(verbose)(quiet)
:
OSS Object
OSS Object

POST /?delete HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Content-Length: ContentLength
Content-MD5: MD5Value
Authorization: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>


<Delete>
<Quiet>true</Quiet>
<Object>
<Key>key</Key>
</Object>

</Delete>

(Request Elements)

Delete

Delete Multiple Object

ObjectQuiet
None.

Key

Object

Object

Object

Object
47


key
Delete.

Quiet

true | false
false
Delete

(Response Elements)

Deleted

Object

Key
DeleteResult

DeleteResult

Delete Multiple Object

Deleted
None

Key

OSSObject

Deleted

1) Delete Multiple Object Content-Length Content-MD5


OSS
2) Content-MD5 Delete Multiple Object
MD5 128 base64
Content-MD5
3) Delete Multiple Object (verbose)
4) Delete Multiple Object Object

5) Delete Multiple Object 2MB 2MB


MalformedXML
6) Delete Multiple Object 1000 Object 1000
48

Object MalformedXML

I
POST /?delete HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Wed, 29 Feb 2012 12:26:16 GMT
Content-Length:151
Content-MD5: fae2e404736a78a0067b62d80b1cc7d8
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:+z3gBfnFAxBcBDgx27Y/jEfbfu8=

<?xml version="1.0" encoding="UTF-8"?>


<Delete>
<Quiet>false</Quiet>
<Object>
<Key>multipart.data</Key>
</Object>
<Object>
<Key>test.jpg</Key>
</Object>
<Object>
<Key>demo.jpg</Key>
</Object>
</Delete>

HTTP/1.1 200 OK
x-oss-request-id: 78320852-7eee-b697-75e1-b6db0f4849e7
Date: Wed, 29 Feb 2012 12:26:16 GMT
Content-Length: 244
Content-Type: application/xml
Connection: close
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>


<DeleteResult xmlns=http://doc.oss.aliyuncs.com>
<Deleted>
<Key>multipart.data</Key>
</Deleted>
<Deleted>
<Key>test.jpg</Key>
</Deleted>
<Deleted>
<Key>demo.jpg</Key>
49

</Deleted>
</DeleteResult>

II
POST /?delete HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Wed, 29 Feb 2012 12:33:45 GMT
Content-Length:151
Content-MD5: fae2e404736a78a0067b62d80b1cc7d8
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:WuV0Jks8RyGSNQrBca64kEExJDs=

<?xml version="1.0" encoding="UTF-8"?>


<Delete>
<Quiet>true</Quiet>
<Object>
<Key>multipart.data</Key>
</Object>
<Object>
<Key>test.jpg</Key>
</Object>
<Object>
<Key>demo.jpg</Key>
</Object>
</Delete>

HTTP/1.1 200 OK
x-oss-request-id: 501ad9bb-1383-771d-0ee9-59a810bd5fde
Date: Wed, 29 Feb 2012 12:33:45 GMT
Content-Length: 0
Connection: close
Server: AliyunOSS

Delete Object

50

5.4.4

Get Object

Object Object

GET /ObjectName HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
Range: bytes=ByteRange()

OSS GET OSS Header


Header

response-content-type

OSScontent-type

OSScontent-language

response-content-language

OSSexpires

response-expires

OSScache-control

response-cache-control

response-content-disposition

OSScontent-disposition

OSScontent-encoding

response-content-encoding

Header

Range

bytes=0-90910
51

If-Modified-Since

200 OK
304 not modified

If-Unmodified-Since

200 OK412 precondition failed

If-Match

ETagobject ETag200 OK
412 precondition failed

If-None-Match

ETagObjectETag,200 OK
304 Not Modified

1) GetObject range Object

2) Range
Content-Range: bytes 0-9/44
44 0-9
Content-Range
3) If-Modified-Since
200 OK
4) If-Modified-Since If-Unmodified-Since If-Match
If-None-Match
5) If-Unmodified-Since If-Match
412 precondition failed
6) If-Modified-Since If-None-Match
304 Not Modified
7) 404 Not Found NoSuchKey
52

8) OSS GET
header
9) OSS Header
200 OSS header GET
10) Object GET
x-oss-server-side-encryption
Object

GET /oss.jpg HTTP/1.1


Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 06:38:30 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:UNQDb7GapEgJCZkcde6OhZ9Jfe8=

HTTP/1.1 200 OK
x-oss-request-id: 3a89276f-2e2d-7965-3ff9-51c875b99c41
Date: Fri, 24 Feb 2012 06:38:30 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Content-Type: image/jpg
Content-Length: 344606
Server: AliyunOSS

[344606 bytes of object data]

Range
GET //oss.jpg HTTP/1.1
Host:oss-example. oss.aliyuncs.com
Date: Fri, 28 Feb 2012 05:38:42 GMT
Range: bytes=100-900
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:qZzjF3DUtd+yK16BdhGtFcCVknM=

HTTP/1.1 206 Partial Content


x-oss-request-id: 28f6508f-15ea-8224-234e-c0ce40734b89
Date: Fri, 28 Feb 2012 05:38:42 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
53

Accept-Ranges: bytes
Content-Range: bytes 100-900/344606
Content-Type: image/jpg
Content-Length: 801
Server: AliyunOSS

[801 bytes of object data]

URL
GET

/oss.jpg?response-expires=Thu%2C%2001%20Feb%202012%2017%3A00%3A00%20GMT&

response-content-type=text&response-cache-control=No-cache&response-content-disposition=attachment%253B
%2520filename%253Dtesting.txt&response-content-encoding=utf-8&response-content-language=%E4%B8%AD
%E6%96%87 HTTP/1.1
Host: oss-example.oss.aliyuncs.com:
Date: Fri, 24 Feb 2012 06:09:48 GMT

HTTP/1.1 200 OK
x-oss-request-id: 1144d124-055c-4052-2c65-a1e3439d41c1
Date: Fri, 24 Feb 2012 06:09:48 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Content-Length: 344606
Connection: close
Content-disposition: attachment; filename:testing.txt
Content-language:
Content-encoding: utf-8
Content-type: text
Cache-control: no-cache
Expires: Fri, 24 Feb 2012 17:00:00 GMT
Server: AliyunOSS

[344606 bytes of object data]

Get Object
Delete Object

54

5.4.5

Head Object

Head Object Object meta

HEAD /ObjectName HTTP/1.1


Host: BucketName/oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

Header

If-Modified-Since

200 OKObject Meta304


not modified

If-Unmodified-Since

200 OKObject
Meta412 precondition failed

If-Match

ETagobject ETag200 OKObject Meta


412 precondition failed

If-None-Match

ETagObjectETag200 OKObject Meta


304 Not Modified

1) 200 OK Head Object


2) HeadObject If-Modified-Since, If-Unmodified-Since,
If-MatchIf-None-Match GetObject
304 Not Modified
3) PutObject x-oss-meta- user meta
x-oss-meta-location user meta
55

4) 404 Not Found


5) Object Head
x-oss-server-side-encryption Object

HEAD /oss.jpg HTTP/1.1


Host: oss-example.oss.aliyuncs.com
Date: Fri, 24 Feb 2012 07:32:52 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:JbzF2LxZUtanlJ5dLA092wpDC/E=

HTTP/1.1 200 OK
x-oss-request-id: 06d4be30-2216-9264-757a-8f8b19b254bb
Date: Fri, 24 Feb 2012 07:32:52 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 344606
Content-Type: image/jpg
Connection: close
Server: AliyunOSS

Put Object
Get Object

56

5.4.6

Put Object

Put Object

PUT /ObjectName HTTP/1.1


Content-LengthContentLength
Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

Header

Cache-Control

ObjectRFC2616

Content-Disposition

ObjectRFC2616

Content-Encoding

ObjectRFC2616

Expires

milliseconds
RFC2616

x-oss-server-side-encry
ption

ossobject

AES256

1) Put Object OSS MD5


ETag OSS
2) Content-Lengthbody
OSS Object Content-Length

57

3) Object
200 OK
4) PutObject x-oss-meta- user
meta x-oss-meta-location Object
user meta 2k
5) Head Content length 411 Length Required
MissingContentLength
6) Body body
time out 400 Bad Request
RequestTimeout OSS

7) Object Bucket 404 Not Found


NoSuchBucket
8) Object Bucket 403 Forbidden
AccessDenied
9) 5G 400 Bad Request
InvalidArgument
10) Object key 1023 400 Bad Request
InvalidObjectName
11) PUT Object OSS 4 HTTP RFC 2616 Header
Cache-ControlExpiresContent-EncodingContent-Disposition
Object Header Object Header

12) Object x-oss-server-side-encryption Header


AES256

400

InvalidEncryptionAlgorithmError Header

HeaderOSS Object Object


x-oss-server-side-encryption Object

58


PUT /oss.jpg HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Cache-control: no-cache
Expires: Fri, 28 Feb 2012 05:38:42 GMT
Content-Encoding: utf-8
Content-Disposition: attachment;filename=oss_download.jpg
Date: Fri, 24 Feb 2012 06:03:28 GMT
Content-Type: image/jpg
Content-Length: 344606
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:kZoYNv66bsmc10+dcGKw5x2PRrk=

[344606 bytes of object data]

HTTP/1.1 200 OK
x-oss-request-id: 61d2042d-1b68-6708-5906-33d81921362e
Date: Fri, 24 Feb 2012 06:03:28 GMT
ETag: 5B3C1A2E053D763E1B002CC607C5A0FE
Connection: close
Content-Length: 0
Server: AliyunOSS

Get Object
Delete Object

59

5.5 Multipart Upload


PUT Object OSS OSS
Multipart Upload
Multipart Upload

100MB

OSS

5.5.1

Initiate Multipart Upload

Multipart Upload OSS


Multipart Upload OSS
Upload ID Multipart Upload ID
Multipart Upload Multipart Upload

POST /ObjectName?uploads HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT date
Authorization: SignatureValue

Header

Cache-Control

ObjectRFC2616

Content-Disposition

ObjectRFC2616

Content-Encoding

ObjectRFC2616
60

Expires

milliseconds
RFC2616

x-oss-server-side-encryption

ObjectpartOSS
part

AES256

(Response Elements)

Bucket

Multipart UploadBucket

InitiateMultipartUploadResult

InitiateMultipartUploadResult

Initiate Multipart Upload

Bucket, Key, UploadId


None
Multipart UploadObject

Key

InitiateMultipartUploadResult
UploadId

Multipart UploadID

InitiateMultipartUploadResult

1) ?uploads CanonicalizedResource

2) Multipart Upload HTTP Cache-Control


Content- DispositionContent-EncodingContent-TypeExpires
x-oss-meta- Headers PUT Object

3) Multipart Upload object


4) Multipart Upload XML
BucketKey UploadID
61

UploadID Multipart
5) Multipart Upload x-oss-server-side-encryption
Header Header part
part OSS 256
AES256 400
InvalidEncryptionAlgorithmError part
x-oss-server-side-encryption OSS 400
InvalidArgument

POST /multipart.data?uploads HTTP/1.1


Host: oss-example.oss.aliyuncs.com
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:/cluRFtRwMTZpC2hTj4F67AGdM4=

HTTP/1.1 200 OK
Content-Length: 230
Server: AliyunOSS
Connection: close
x-oss-request-id: 42c25703-7503-fbd8-670a-bda01eaec618
Date: Wed, 22 Feb 2012 08:32:21 GMT
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>


<InitiateMultipartUploadResult xmlns=http://doc.oss.aliyuncs.com>
<Bucket> multipart_upload</Bucket>
<Key>multipart.data</Key>
<UploadId>0004B9894A22E5B1888A1E29F8236E2D</UploadId>
</InitiateMultipartUploadResult>

List Multipart Uploads


Abort Multipart Upload
Complete Multipart Upload

62

5.5.2

Upload Part

Multipart Upload Object Upload ID


Part Part part number
1~10,000 Upload ID
part
OSS Part Part
part 5MB Part

PUT /ObjectName? partNumber=PartNumber&uploadId=UploadId HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: SignatureValue

1) Part Initiate Multipart Upload


OSS Upload ID
2) Multipart Upload Part Part
5MB Upload Part Part
Complete Multipart Upload
3) OSS Part MD5 ETag
OSS
MD5
4) Part 1~10000 OSS
InvalidArgument
5) Initiate Multipart Upload x-oss-server-side-encryption
Part Upload Part
x-oss-server-side-encryption Part
Initiate Multipart Upload
63

:
PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E36 HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length6291456
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:J/lICfXEvPmmSW86bBAfMmUmWjI=

[6291456 bytes data]

:
HTTP/1.1 200 OK
Server: AliyunOSS
Connection: close
ETag: 7265F4D211B56873A381D321F586E4A9
x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0c21a
Date: Wed, 22 Feb 2012 08:32:21 GMT

Initiate Multipart Upload


List Parts
Complete Multipart Upload

64

5.5.3

Complete Multipart Upload

Part Complete Multipart Upload API


Multipart Upload
Part part ETAGOSS Part
Part Part OSS
part Object

POST /ObjectName?uploadId=UploadId HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: Signature

<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>

(Request Elements)

CompleteMultipartUpload

Complete Multipart Upload

Part

ETag

PartOSSETag

Part

Part

Part

ETag, PartNumber
InitiateMultipartUploadResult

PartNumber

Part

65

Part

(Response Elements)

Bucket

Bucket

CompleteMultipartUploadResult

CompleteMultipartUploadResult

Complete Multipart Upload

Bucket, Key, ETag, Location


None
ETag (entity tag) ObjectObject

ETag

Complete Multipart UploadObjectETag


UUIDETagObject.

CompleteMultipartUploadResult
Location

ObjectURL

CompleteMultipartUploadResult
Object

Key

CompleteMultipartUploadResult

1) Complete Multipart Upload


5MB Partlist Part Etag
Part Part Part
ETag
2) OSS Complete Multipart Upload
OSS OSS
3) Part List ,Part Part
1 Part 5
4) OSS Complete Multipart Upload Upload ID

5) Object Upload Id Complete Upload ID


66

Object Upload ID
6) Initiate Multipart Upload x-oss-server-side-encryption
Complete Multipart Upload
x-oss-server-side-encryption Object

:
POST /multipart.data? uploadId=0004B9B2D2F7815C432C9057C03134D4 HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 1056
Date: Fri, 24 Feb 2012 10:19:18 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:8VwFhFUWmVecK6jQlHlXMK/zMT0=

<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"3349DC700140D7F86A078484278075A9"</ETag>
</Part>
<Part>
<PartNumber>5</PartNumber>
<ETag>"8EFDA8BE206636A695359836FE0A0E0A"</ETag>
</Part>
<Part>
<PartNumber>8</PartNumber>
<ETag>"8C315065167132444177411FDA149B92"</ETag>
</Part>
</CompleteMultipartUpload>

:
HTTP/1.1 200 OK
Server: AliyunOSS
Content-Length: 329
Content-Type: Application/xml
Connection: close
x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d217d6e
Date: Fri, 24 Feb 2012 10:19:18 GMT

<?xml version="1.0" encoding="UTF-8"?>


<CompleteMultipartUploadResult xmlns=http://doc.oss.aliyuncs.com>
<Location>http://storage.aliyun-inc.com/multipart_upload/multipart.data</Location>
<Bucket>multipart_upload</Bucket>
<Key>multipart.data</Key>
67

<ETag>&quot;B864DB6A936D376F9F8D3ED3BBE540DD-3&quot;</ETag>
</CompleteMultipartUploadResult>

Initiate Multipart Upload


List Parts

68

5.5.4

Abort Multipart Upload

Upload ID Multipart Upload


Multipart Upload Upload ID
Part

DELETE /ObjectName?uploadId=UploadId HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: Signature

1) Multipart Upload Part


Part
OSS Abort Multipart Upload
2) Upload Id OSS 404 NoSuchUpload

:
Delete /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:J/lICfXEvPmmSW86bBAfMmUmWjI=

:
HTTP/1.1 204
Server: AliyunOSS
Connection: close
x-oss-request-id: 059a22ba-6ba9-daed-5f3a-e48027df344d
Date: Wed, 22 Feb 2012 08:32:21 GMT

Initiate Multipart Upload


List Multipart Uploads
69

5.5.5

List Multipart Uploads

List Multipart Uploads Multipart Upload


Multipart Upload Complete Abort Multipart
Upload OSS 1000 Multipart Upload
OSS Multipart Upload
max-uploads OSS IsTruncated
Multipart Upload

Get /?uploads HTTP/1.1


Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: Signature

delimiter

Object
delimiterobjectCommonPrefixes

max-uploads

Multipart Uploads1000max-keys
1000

key-marker

upload-id-marker

upload-id-markerObject

key-markerMultipart

upload-id-markerObject

key-marker Multipart Object key-marker


Upload IDupload-id-markerMultipart Uploads

prefix

object keyprefixprefixkey
prefix

upload-id-marker

key-marker

key-markerOSSupload-id-marker

key-markerObject

key-markerMultipartObjectkey-markerUpload
70

IDupload-id-markerMultipart Uploads

(Response Elements)

ListMultipartUploadsResult

List Multipart Upload

Bucket,

KeyMarker,

UploadIdMarker,

NextKeyMarker,

NextUploadIdMarker, MasUploads, Delimiter, Prefix, CommonPrefixes,


IsTruncated, Upload
None
Bucket

Bucket

ListMultipartUploadsResult

KeyMarker

Object

ListMultipartUploadsResult

UploadIdMarker

UploadID

ListMultipartUploadsResult

NextKeyMarker

NextKeyMarker
KeyMarker

ListMultipartUploadsResult

NextUploadMarker

NextUploadMarker
UploadMarker

ListMultipartUploadsResult

MaxUploads

Upload

ListMultipartUploadsResult

IsTruncated

Multipart Upload
true

false

false | true
false
ListMultipartUploadsResult

Upload

Multipart Upload

Key, UploadId, Initiated


ListMultipartUploadsResult

Key

Multipart UploadObject
71


Upload
UploadId

Multipart UploadID

Upload

Initiated

Multipart Upload.

Upload

1) max-uploads 1000
2) OSS Object Object

3) prefix bucket object

4) List Multipart Uploads 5 prefixmarkerdelimiter


upload-id-marker max-keys
Multipart Uploads

:
Get /?uploads

HTTP/1.1

Host:oss-example. oss.aliyuncs.com
Date: Thu, 23 Feb 2012 06:14:27 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:JX75CtQqsmBBz+dcivn7kwBMvOY=

:
HTTP/1.1 200
Server: AliyunOSS
Connection: close
Content-length: 1839
Content-type: application/xml
x-oss-request-id: 58a41847-3d93-1905-20db-ba6f561ce67a
Date: Thu, 23 Feb 2012 06:14:27 GMT

<?xml version="1.0" encoding="UTF-8"?>


<ListMultipartUploadsResult xmlns=http://doc.oss.aliyuncs.com>
<Bucket>oss-example</Bucket>
<KeyMarker></KeyMarker>
72

<UploadIdMarker></UploadIdMarker>
<NextKeyMarker>oss.avi</NextKeyMarker>
<NextUploadIdMarker>0004B99B8E707874FC2D692FA5D77D3F</NextUploadIdMarker>
<Delimiter></Delimiter>
<Prefix></Prefix>
<MaxUploads>1000</MaxUploads>
<IsTruncated>false</IsTruncated>
<Upload>
<Key>multipart.data</Key>
<UploadId>0004B999EF518A1FE585B0C9360DC4C8</UploadId>
<Initiated>2012-02-23T04:18:23.000Z</Initiated>
</Upload>
<Upload>
<Key>multipart.data</Key>
<UploadId>0004B999EF5A239BB9138C6227D69F95</UploadId>
<Initiated>2012-02-23T04:18:23.000Z</Initiated>
</Upload>
<Upload>
<Key>oss.avi</Key>
<UploadId>0004B99B8E707874FC2D692FA5D77D3F</UploadId>
<Initiated>2012-02-23T06:14:27.000Z</Initiated>
</Upload>
</ListMultipartUploadsResult>

Initiate Multipart Upload


List Parts

73

5.5.6

List Parts

List Parts Upload ID Part

Get

/ObjectName?uploadId=UploadId HTTP/1.1

Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: Signature

(Request Parameters)

uploadId

Multipart UploadID

max-parts

OSSPart

1,000

part-number-marker

ListPart NumberPart

(Response Elements)

ListPartsResult

List Part

Bucket,

Key,

UploadId,

NextPartNumberMarker, MaxParts, IsTruncated, Part

Bucket

Bucket

ListPartsResult

Key

Object

ListPartsResult

UploadId

UploadID

ListPartsResult

PartNumberMarker

ListPart Number
74

PartNumberMarker,


ListPartsResult
NextPartNumberMarker

NextPartNumberMarker
PartNumberMarker.

ListPartsResult

MaxParts

Part

ListPartsResult

IsTruncated

List Part
true

false

true | false
ListPartsResult
Part

Part

PartNumber, LastModified, ETag, Size


ListPartsResult
PartNumber

Part

ListPartsResult.Part

LastModified

Part

ListPartsResult.part
PartETag

ETag

ListPartsResult.Part
Part

Size

ListPartsResult.Part

1) List Parts max-parts part-number-marker


2)

max-parts 1000 1000

3) OSS Part
4) List Part Part Number
ETag Complete Multipart Part

:
75

Get

/multipart.data?uploadId=0004B999EF5A239BB9138C6227D69F95

HTTP/1.1

Host: oss-example.oss.aliyuncs.com
Date: Thu, 23 Feb 2012 07:13:28 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:4qOnUMc9UQWqkz8wDqD3lIsa9P8=

:
HTTP/1.1 200
Server: AliyunOSS
Connection: close
Content-length: 1221
Content-type: application/xml
x-oss-request-id: 106452c8-10ff-812d-736e-c865294afc1c
Date: Thu, 23 Feb 2012 07:13:28 GMT

<?xml version="1.0" encoding="UTF-8"?>


<ListPartsResult xmlns=http://doc.oss.aliyuncs.com>
<Bucket>multipart_upload</Bucket>
<Key>multipart.data</Key>
<UploadId>0004B999EF5A239BB9138C6227D69F95</UploadId>
<NextPartNumberMarker>5</NextPartNumberMarker>
<MaxParts>1000</MaxParts>
<IsTruncated>false</IsTruncated>
<Part>
<PartNumber>1</PartNumber>
<LastModified>2012-02-23T07:01:34.000Z</LastModified>
<ETag>&quot;3349DC700140D7F86A078484278075A9&quot;</ETag>
<Size>6291456</Size>
</Part>
<Part>
<PartNumber>2</PartNumber>
<LastModified>2012-02-23T07:01:12.000Z</LastModified>
<ETag>&quot;3349DC700140D7F86A078484278075A9&quot;</ETag>
<Size>6291456</Size>
</Part>
<Part>
<PartNumber>5</PartNumber>
<LastModified>2012-02-23T07:02:03.000Z</LastModified>
<ETag>&quot;7265F4D211B56873A381D321F586E4A9&quot;</ETag>
<Size>1024</Size>
</Part>
</ListPartsResult>

76

Initiate Multipart Upload


List Multipart Uploads

77

6. OSS
OSS OSS

6.1 OSS
OSS OSS 3xx4xx 5xx
HTTP application/xml

<?xml version="1.0" ?>


<Error xmlns=http://doc.oss.aliyuncs.com>
<Code>
AccessDenied
</Code>
<Message>
Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters
</Message>
<RequestId>
1D842BC5425544BB
</RequestId>
<HostId>
oss.aliyuncs.com
</HostId>
</Error>

CodeOSS

MessageOSS

RequestId UUID
RequestId OSS

HostId OSS oss.aliyuncs.com

78

6.2 OSS
OSS

AccessDenied

403

BucketAlreadyExists

Bucket

409

BucketNotEmpty

Bucket

409

EntityTooLarge

400

EntityTooSmall

400

FileGroupTooLarge

400

FilePartNotExist

Part

400

FilePartStale

Part

400

InvalidArgument

400

InvalidAccessKeyId

Access Key ID

403

InvalidBucketName

Bucket

400

InvalidDigest

400

400

InvalidObjectName

Object

400

InvalidPart

Part

400

InvalidPartOrder

part

400

Logging bucket

400

InternalError

OSS

500

MalformedXML

XML

400

MethodNotAllowed

405

MissingArgument

411

MissingContentLength

411

NoSuchBucket

Bucket

404

InvalidEncryptionAlgorit

HTTP

hmError

InvalidTargetBucketFor
Logging

79

NoSuchKey

404

NoSuchUpload

Multipart Upload ID

404

NotImplemented

501

PreconditionFailed

412

15
RequestTimeTooSkewed

403

RequestTimeout

400

SignatureDoesNotMatch

403

TooManyBuckets

Bucket

400

80

6.3 OSS
HTTP (Chunked Transfer Encoding)
HTTP HTTP HTTP
OSS OSS
HTTP 411 HTTP
The request must be chunked or have a content length

81

6.4 OSS
OSS 405 Method Not Allowed

abc / HTTP/1.1
Host:oss-example. oss.aliyuncs.com
Date: date
Authorization: signatureValue

x-oss-request-id: 2403382433A2EDA8
Allow: GET, DELETE, HEAD, PUT
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Thu, 31 Mar 2011 10:01:52 GMT
Server: AliyunOSS

<?xml version="1.0" ?>


<Error xmlns=http://doc.oss.aliyuncs.com>
<Code>
MethodNotAllowed
</Code>
<Message>
The specified method is not allowed against this resource.
</Message>
<ResourceType>
BUCKET
</ResourceType>
<Method>
abc
</Method>
<RequestId>
2403382433A2EDA8
</RequestId>
<HostId>
oss.aliyuncs.com
</HostId>
</Error>
82

/bucket/ ResourceType bucket


/bucket/objectResourceType object

83

6.5 OSS
OSS OSS PUT
If-Modified-Since OSS 501 Not Implemented

PUT /my-image.jpg HTTP/1.1


Host:oss-example. oss.aliyuncs.com
Date: Wed, 28 May 2011 22:32:00 GMT
If-Modified-Since: Wed, 06 Apr 2011 10:02:46 GMT

501 Not Implemented


x-oss-request-id: 77E534EBF90372BE
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Thu, 28 Apr 2011 08:03:07 GMT
Connection: close
Server: AliyunOSS

<?xml version="1.0" ?>


<Error xmlns=http://doc.oss.aliyuncs.com>
<Code>
NotImplemented
</Code>
<Message>
A header you provided implies functionality that is not implemented.
</Message>
<Header>
If-Modified-Since
</Header>
<RequestId>
77E534EBF90372BE
</RequestId>
<HostId>
oss.aliyuncs.com
</HostId>
</Error>

84

You might also like