2014.02.21 23:48
Version: | 2014-02-21 |
---|---|
Copyright: | 2014 호스트웨이아이디씨(주) |
호스트웨이 웹 스토리지 서비스란 웹을 통해 자료를 클라우드에 저장할 수 있게 해줍니다. 클라우드에 저장된 자료는 사용자가 허용하는 대상에게 웹을 통해 다운로드 됩니다. 클라우드에 저장되기 때문에 용량이나 대역폭의 제한이 전용 호스팅을 사용할 때 보다 월등히 높습니다. 데이터는 1개 이상의 복사본으로 저장장비 오류시 데이터가 유실 되지 않게 합니다.
이 문서는 호스트웨이 웹 스토리지 서비스가 제공하는 API(Application Programmable Interface)를 사용해서 데이터를 저장하고 통제하는 명령과 변수및 오류에대해 기술합니다. API는 REST(REpresental State Transfer)형식으로 제공됩니다.
버킷은 자료를 저장하는 도메인을 의미합니다. WSS는 자료를 저장할 때 hbox.a3c.co.kr 의 서브도메인을 만들수 있게 하는데 자료는 각각의 버킷안에서 고유한 이름을 가집니다.
오브젝트는 버킷 범위에서 각각 고유한 자료를 의미합니다. 오브젝트는 구분되며 HTTP Protocol로 전송되는 리퀘스트 헤더(Request Header)정보와 바디(Body)가 URL중 정해진 일부분을 키(Key)로 저장됩니다.
API를 통해 버킷이나 오브젝트를 대상으로 리퀘스트를 보낼때 해당 리퀘스트의 인증값 및 헤더(Header)정보를 보고 AccessDenied 오류를 발생시킬지 여부를 설정 할 수 있습니다.
API를 통해 업로드한 오브젝트에 생애주기를 설정하여 해당 주기가 만료되면 자동삭제되게 합니다.
오브젝트를 업로드/다운로드 할때 발생하는 비용을 버킷 소유자가 부담하는 것이 아닌 서비스 사용자가 부담 할 수 있게 설정할 수 있습니다.
API사용 기록을 Web Access Log 형식으로 별도의 오브젝트를 자동 생성할 수 있게 설정 할 수 있습니다.
동일한 오브젝트 키에 버젼 번호를 부여하여 각각의 버젼 번호별로 독립적으로 오브젝트를 업/다운로드 할 수 있습니다.
지정한 버킷에 인덱스와 고유한 오류페이지 기능을 부여하여 가상 호스팅목적으로 사용할 수 있습니다.
아래 명령으로 버킷의 목록을 가져 올 수 있습니다.
METHOD/URL | GET / |
Header | Host: hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <Owner> <ID>소유자 CanonicalId</ID> <DisplayName>소유자 이름</DisplayName> </Owner> <Buckets> <Bucket> <Name>버킷 이름</Name> <CreationDate>버킷 생성일</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>
버킷을 삭제한다. 버킷내의 모든 오브젝트는 버킷이 삭제되기 전에 미리 삭제되어야 한다.
METHOD/URL | DELETE / HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
DELETE http://test567856.hbox.a3c.co.kr / HTTP/1.1 x-amz-date: Fri, 15 Jun 2012 01:48:51 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:380FLNw8GNwdDEtQiDkQtLIQ73Y= Host: test567856.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Fri, 15 Jun 2012 01:48:50 GMT x-amz-request-id: 4fda948217416a4614000056 Vary: Accept-Encoding Content-Length: 0 Content-Type: text/html; charset=utf-8
버킷 생애주기를 삭제한다. 버킷 소유자 권한 또는 소유자로부터 넘겨 받은 권한이 필요하다. 버킷과 관련된 모든 생애주기가 삭제된다.
METHOD/URL | DELETE /?lifecycle HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 예제:
DELETE http://testtest99999.hbox.a3c.co.kr /?lifecycle HTTP/1.1 x-amz-date: Wed, 20 Jun 2012 08:00:32 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:jwIWynZxFjmIXfFuMzWcIdjcLh4= Host: testtest99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Wed, 20 Jun 2012 08:00:30 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe1831e64f8004c78000119 Vary: Accept-Encoding Content-Length: 0 Content-Type: text/html; charset=utf-8
버킷의 Policy를 삭제한다. DeletePolicy권한이 필요하고 버킷의 소유자 권한이 필요하다.
다음과 같은 에러가 있다. 403 Access denied error(DeletePolicy권한이 없을 경우) 405 Method Not Allowed error(버킷 소유자가 아닐경우) 204 No Content error(버킷에 Polciy가 없을 경우)
METHOD/URL | DELETE /?policy HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 예제:
DELETE http://test99999.hbox.a3c.co.kr /?policy HTTP/1.1 x-amz-date: Wed, 20 Jun 2012 08:05:51 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:YXCEDWTeXFbmVopwiyJCu5R2N+c= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Wed, 20 Jun 2012 08:05:48 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe1845c64f8004c7800011d Vary: Accept-Encoding Content-Length: 0 Content-Type: text/html; charset=utf-8
버킷 웹싸이트 설정을 삭제한다. 버킷의 소유자 권한이 필요하거나 또는 소유자로 부터 허용 권한을 넘겨 받아야 한다.
다음과 같은 리턴 값이 있다. 200 OK(성공적으로 웹사이트를 삭제했을 경우) 404 error(버킷이 없을 경우)
METHOD/URL | DELETE /?website HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 예제:
DELETE http://test99999.hbox.a3c.co.kr /?website HTTP/1.1 x-amz-date: Wed, 20 Jun 2012 04:33:50 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:pSuRQZmi/q9iLzBgPbyP3yeAexk= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Wed, 20 Jun 2012 04:33:48 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe152ac64f8004c780000e5 Vary: Accept-Encoding Content-Length: 0 Content-Type: text/html; charset=utf-8
버킷내의 오브젝트 리스트를 가져온다. 요청 파라미터를 사용해서 오브젝트 리스트의 일부만 가져올 수 있다. 오브젝트는 1000개 까지 가져올 수 있다. READ 권한이 필요하다.
METHOD/URL | GET / HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
파라미터:
delimiter | 여러 키들를 특정 그룹으로 만드는 구분자이다. prefix와 delimiter 내의 문자열이 같은 모든 키들은 CommonPrefixes내에서 하나의 결과값으로 그룹지어 진다 |
marker | 버킷내의 키를 지정해서 가져올 리스트의 시작을 나타내도록 한다. |
max-keys | 결과 body에 엄마만큼의 키값들이 포함될지를 나타낸다. 포함되지 않은 결과가 있을 경우 결과에 <isTruncated>true<isTruncated>가 포함된다. 기본값 1000 |
prefix | 같은 prefix로 시작하는 키값들을 선택할 수 있다. 파일 시스템의 폴더처럼 그룹을 만드는데 사용할 수 있다. prefix와 delimiter를 함께 사용할 수 있다. |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> <Buckets> <Bucket> <Name>testtest343</Name> <CreationDate>2012-06-14 09:24:47.464000</CreationDate> </Bucket> <Bucket> <Name>test77777</Name> <CreationDate>2012-06-14 09:08:02.291000</CreationDate> </Bucket> <Bucket> <Name>test4544</Name> <CreationDate>2012-06-14 09:38:57.317000</CreationDate> </Bucket> <Bucket> <Name>test88888</Name> <CreationDate>2012-06-14 08:08:43.563000</CreationDate> </Bucket> <Bucket> <Name>test99999</Name> <CreationDate>2012-06-14 07:02:29.931000</CreationDate> </Bucket> <Bucket> <Name>hanstest</Name> <CreationDate>2012-06-14 07:10:24.373000</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>
요청 예제:
GET http://hbox.a3c.co.kr / HTTP/1.1 x-amz-date: Fri, 15 Jun 2012 05:40:16 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:2UNo9uvVyBAXtikPSS1tRhhE+Sc= Host: hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Fri, 15 Jun 2012 05:40:12 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdacabc64f80042220000f8 Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> <Buckets> <Bucket> <Name>testtest343</Name> <CreationDate>2012-06-14 09:24:47.464000</CreationDate> </Bucket> <Bucket> <Name>test77777</Name> <CreationDate>2012-06-14 09:08:02.291000</CreationDate> </Bucket> <Bucket> <Name>test4544</Name> <CreationDate>2012-06-14 09:38:57.317000</CreationDate> </Bucket> <Bucket> <Name>test88888</Name> <CreationDate>2012-06-14 08:08:43.563000</CreationDate> </Bucket> <Bucket> <Name>test99999</Name> <CreationDate>2012-06-14 07:02:29.931000</CreationDate> </Bucket> <Bucket> <Name>hanstest</Name> <CreationDate>2012-06-14 07:10:24.373000</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>
버킷의 접근관리 설정을 가져온다.
METHOD/URL | GET /?acl HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?acl HTTP/1.1 x-amz-date: Fri, 15 Jun 2012 08:15:12 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:pqeCTcZRVEJ31o1+rAtylHM32bg= Host: test99999.hbox.a3c.co.kr
음답 예제:
HTTP/1.1 200 OK Date: Fri, 15 Jun 2012 08:15:08 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdaef0c64f80042220000fa Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
버킷의 생애주기 설정을 가져온다. 버킷 소유권한이 필요하다.
METHOD/URL | GET /?lifecycle HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>4fdecf6564f8004c77000048</ID> <Prefix>test</Prefix> <Status>Enabled</Status> <Expiration> <Days>20</Days> </Expiration> </Rule> </LifecycleConfiguration>
요청 예제:
GET http://test88888.hbox.a3c.co.kr /?lifecycle HTTP/1.1 x-amz-date: Mon, 18 Jun 2012 06:50:14 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:OOyV+xiMq4ZdZYLC2sK8zuqQogI= Host: test88888.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Mon, 18 Jun 2012 06:50:10 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdecfa264f8004c78000048 Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>4fdecf6564f8004c77000048</ID> <Prefix>test</Prefix> <Status>Enabled</Status> <Expiration> <Days>20</Days> </Expiration> </Rule> </LifecycleConfiguration>
버킷의 리젼 설정을 가져온다.
METHOD/URL | GET /?location HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> None </LocationConstraint>
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?location HTTP/1.1 x-amz-date: Fri, 15 Jun 2012 08:15:12 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:s6KI0tlMAlHLVdZSfyXLuExgGyY= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Fri, 15 Jun 2012 08:15:09 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdaef0d64f80042230000de Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">None</LocationConstraint>
버킷의 로깅 설정을 가져온다.
METHOD/URL | GET /?logging HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01/"> <LoggingEnabled> <TargetBucket>test99999</TargetBucket> <TargetPrefix>test99999</TargetPrefix> <TargetGrants></TargetGrants> </LoggingEnabled> </BucketLoggingStatus>
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?logging HTTP/1.1 x-amz-date: Fri, 15 Jun 2012 08:46:44 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:9BdFdtcqeCCaIMmb+yzZTy0MHfM= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Fri, 15 Jun 2012 08:46:40 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdaf67064f80042230000eb Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01/"> <LoggingEnabled> <TargetBucket>test99999</TargetBucket> <TargetPrefix>test99999</TargetPrefix> <TargetGrants></TargetGrants> </LoggingEnabled> </BucketLoggingStatus>
버킷 내 오브젝트들의 모든 버전 목록을 가져온다.
METHOD/URL | GET /?versions HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
파라미터:
delimiter | 여러 키들를 특정 그룹으로 만드는 구분자이다. prefix와 delimiter 내의 문자열이 같은 모든 키들은 CommonPrefixes내에서 하나의 결과값으로 그룹지어 진다 |
key-marker | 버킷내의 키를 지정해서 가져올 리스트의 시작을 나타내도록 한다. |
max-keys | 결과 body에 얼마만큼의 키값들이 포함될지를 나타낸다. 포함되지 않은 결과가 남아 있을 경우 결과에 <isTruncated>true<isTruncated>가 포함된다. |
prefix | 같은 prefix로 시작하는 키값들을 선택할 수 있다. 파일 시스템의 폴더처럼 그룹을 만드는데 사용할 수 있다. prefix와 delimiter를 함께 사용할 수 있다. |
version-id-marker | 오브젝트 버전을 지정해서 가져올 리스트의 시작을 나타낸다. |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>test99999</Name> <Prefix /> <KeyMarker /> <MaxKeys>1000</MaxKeys> <IsTruncated>False</IsTruncated> <Version> <Key>artifacts.xml</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T09:46:56.758Z</LastModified> <ETag>ed1fc19e3afdb3d4ed2d13d5bac1a8ef</ETag> <Size>182508</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> <Version> <Key>eclipse.ini</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T07:03:49.440Z</LastModified> <ETag>5dd520bd0132bd1f2054ccf161dcf468</ETag> <Size>442</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> <Version> <Key>eclipsec.exe</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T07:03:57.790Z</LastModified> <ETag>245835b1482085a0eb6a66df7f52801b</ETag> <Size>17920</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> <Version> <Key>index.html</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T07:08:38.722Z</LastModified> <ETag>5d41402abc4b2a76b9719d911017c592</ETag> <Size>5</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> <Version> <Key>notice.html</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T09:02:33.943Z</LastModified> <ETag>3a09dda261dd572c85211d03ae12388e</ETag> <Size>8951</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> <Version> <Key>test/</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T07:02:48.177Z</LastModified> <ETag>d41d8cd98f00b204e9800998ecf8427e</ETag> <Size>0</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> <Version> <Key>test2/</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T08:58:31.494Z</LastModified> <ETag>d41d8cd98f00b204e9800998ecf8427e</ETag> <Size>0</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> </ListVersionsResult>
요청 예졔:
GET http://test99999.hbox.a3c.co.kr /?versions&prefix=index HTTP/1.1 Host: test99999.hbox.a3c.co.kr Accept-Encoding: identity Date: Tue, 19 Jun 2012 04:34:03 GMT Content-Length: 0 Authorization: AWS AKIAJT5ISXOUG5KVB2NW:gtECehL4rGzTNxni4m6hGdHTYsU=
응답 예제:
HTTP/1.1 200 OK Date: Tue, 19 Jun 2012 04:34:02 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe0013a64f8004c7800006e Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>test99999</Name> <Prefix>index</Prefix> <KeyMarker /> <MaxKeys>1000</MaxKeys> <IsTruncated>False</IsTruncated> <Version> <Key>index.html</Key> <VersionId>null</VersionId> <IsLatest>True</IsLatest> <LastModified>2012-06-14T07:08:38.722Z</LastModified> <ETag>5d41402abc4b2a76b9719d911017c592</ETag> <Size>5</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> </Version> </ListVersionsResult>
버킷의 Policy 설정을 가져온다. 해당 버킷의 GetPolicy 권한을 갖고 있거나 버킷의 소유자 권한이 있어야 한다. GetPolicy 권한이 없을 경우 403 Access Denied 에러를 보낸다.
METHOD/URL | GET /?policy HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?policy HTTP/1.1 x-amz-date: Tue, 19 Jun 2012 09:18:51 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:J9QsoZ+2WlPBo8E61xh/Huni7ng= Host: test99999.hbox.a3c.co.kr
응답 예졔:
HTTP/1.1 200 OK Date: Tue, 19 Jun 2012 09:18:46 GMT0 Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe043f664f8004c780000d9 Transfer-Encoding: chunked Content-Type: application/json .. code-block:: json {"Id": "Policy1340095795095", "Statement": [{"Resource": "arn:aws:s3:::test99999/*", "Effect": "Deny", "Sid": "Stmt1340093832049", "Action": ["s3:DeleteBucket"], "Condition": {}, "Principal": {"CanonicalUser": ["*"]}}]}
Request payment 설정을 가져온다.
METHOD/URL | GET ?requestPayment HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Payer>Requester</Payer> </RequestPaymentConfiguration>
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?requestPayment HTTP/1.1 x-amz-date: Fri, 15 Jun 2012 09:31:51 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:YcjSJpuOEHafFTEYp9gfnmF8cKA= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Fri, 15 Jun 2012 09:31:48 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdb010464f80042230000fc Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Payer>Requester</Payer> </RequestPaymentConfiguration>
버킷의 버전 설정을 가져온다. 버킷 소유자 권한이 필요하다.
METHOD/URL | GET /?versioning HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> <MfaDelete>Disabled</MfaDelete> </VersioningConfiguration>
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?versioning HTTP/1.1 x-amz-date: Mon, 18 Jun 2012 04:40:23 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:KChVFHqyBFaGYOdHENZPKw4uc1E= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 OK Date: Mon, 18 Jun 2012 04:40:20 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fdeb13464f8004c78000033 Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> <MfaDelete>Disabled</MfaDelete> </VersioningConfiguration>
웹사이트 설정 값을 가져온다. 버킷의 소유자 권한이 필요하다.
METHOD/URL | GET /?website HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <IndexDocument> <Suffix>index.html</Suffix> </IndexDocument> <ErrorDocument> <Key>404.html</Key> </ErrorDocument> </WebsiteConfiguration>
요청 예제:
GET http://test99999.hbox.a3c.co.kr /?website HTTP/1.1 x-amz-date: Mon, 18 Jun 2012 02:07:40 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:U75xuINVYq7gQ5ejRFrtQTiovHU= Host: test99999.hbox.a3c.co.kr Connection: Keep-Alive
응답 예제:
HTTP/1.1 200 OK Date: Mon, 18 Jun 2012 02:07:39 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fde8d6b64f8004c7700002c Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <IndexDocument> <Suffix>index.html</Suffix> </IndexDocument> <ErrorDocument> <Key>404.html</Key> </ErrorDocument> </WebsiteConfiguration>
진행중인 멀티파트 업로드 리스트들을 되돌려준다. 진행중인 멀티마트 업로드는 멀티파트를 시작하고 나서, 끝나지 않거나 중단된 멀티파트 업로드를 의미한다. 디폴트로 1000개를 되돌려 주며, 최대 갯수도 1000개이다. max-uploads 파라미터를 사용해서, 얻고자 하는 갯수만큼 목록을 가져올 수 있다. Key에 의해서 정렬된 업로드를 되돌려 받는다. 같은 오브젝트 키를 사용해서 업로드된 하나이상의 멀티파트들이 있다면, 첫번째 키로 정렬된 업로드를 되돌려 받는다.
METHOD/URL | GET /?uploads HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
파라미터:
이름 | 설명 | 타입 | 필요여부 |
delimiter | 여러 키들를 특정 그룹으로 만드는 구분자이다. prefix와 delimiter내의 문자열이 같은 모든 키들은 CommonPrefixes내에서 하나의 결과값으로 그룹지어 진다. | String | No |
max-uploads | 되돌려 받고 싶은 멀티파트 업로드의 수를 성정할 수 있다. 디폴트는 1,000. | Integer | No |
key-marker | upload-id-marker와 같이 사용한며, 리스트 시작시점의 멀티파트 업로드를 나타낸다. upload-id-marker가 명시되지 않았다면, 명시된 key-marker보다 큰 키들이 리스트에 포함될 것이다. upload-id-marker가 명시되었다면, 명시된 key-marker보다 큰 키들이 포한된 리스트에서 upload-id-marker보다 큰 키들만 리스트에 포함될 것이다. | String | No |
prefix | 같은 prefix로 시작하는 키값들을 선택할 수 있다. 파일 시스템의 폴더처럼 그룹을 만드는데 사용할 수 있고, prefix와 delimiter 를 함께 사용할 수 있다. | String | No |
upload-id-maker | key-marker와 같이 사용되며, 리스트 시작시점의 멀티파트 업로드를 나타낸다. key-marker가 명시되지 않았다면, upload-id-marker 파라미터는 무시한다. 반면에 명시되었다면, 명시된 key-marker보다 큰 키들이 포한된 리스트에서 upload-id-marker보다 큰 키들만 리스트에 포함될 것이다. | String | No |
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <ListMultipartUploadsResult> <Bucket>multipart</Bucket> <Prefix/> <KeyMarker/> <MaxUploads/> <IsTruncated>False</IsTruncated> <Upload> <Key>multipart_02</Key> <UploadId>500500600cd20b0e1c000003</UploadId> <Initiator> <ID>65a011a29cdf8ec533ec3d1ccaae921c</ID> <DisplayName>None</DisplayName> </Initiator> <Owner> <ID>65a011a29cdf8ec533ec3d1ccaae921c</ID> <DisplayName>None</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> <Initiated>2012-07-17T06:04:16.000Z</Initiated> </Upload> <Upload> <Key>multipart_10</Key> <UploadId>4fffc7230cd20b25fc000089</UploadId> <Initiator> <ID>65a011a29cdf8ec533ec3d1ccaae921c</ID> <DisplayName>None</DisplayName> </Initiator> <Owner> <ID>65a011a29cdf8ec533ec3d1ccaae921c</ID> <DisplayName>None</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> <Initiated>2012-07-13T06:58:43.000Z</Initiated> </Upload> </ListMultipartUploadsResult>
응답 elements:
이름 | 설명 | 타입 |
ListPartsResult | Bucket, KeyMarker, UploadIdMarker, NextKeyMarker, NextUploadIdMarker, MaxUploads, Delimiter, Prefix, CommonPrefixes, IsTruncated 을 감싸는 노드 | Container |
Bucket | 멀티파트 업로드가 시작된 버킷의 이름 | String |
KeyMarker | 리스트의 시작시점을 설정하는 키 | String |
UploadIdMarker | 리스트의 시작시점을 설정하는 UploadId | String |
NextKeyMarker | 리스트가 중단됐을때, 다음 요청에서 key-marker 요청 파라미터를 위해 사용될 값임을 나타낸다. | String |
NextUploadIdMarker | 리스트가 중단됐을때, 다음 요청에서 upload-id-marker 요청 파라미터를 위해 사용될 값임을 나타낸다. | String |
MaxUploads | 응답 리스트에 포함 될 수 있는 멀티파트 업로드의 최대 갯수 | Integer |
IsTruncated | 되돌려 받은 멀티파트 업로드 리스트의 수보다 더 많은 파트들의 존재유무. True 이면 더 많이 존재. False 이면 되돌려 받은 리스트의 수가 전체 갯수임 | Boolean |
Upload | 특정 멀티파트 업로드와 연관된 요소들을 포함. Key, UploadId, InitiatorOwner, StorageClass, Initiated 을 감싸는 노드. | Container |
Key | 멀티파트 업로드가 시작된 오브젝트 키 | Integer |
UploadId | 멀티파트 업로드를 식별하는 Upload ID | Integer |
Initiator | 멀티파트 업로드를 시작한 사용자의 정보를 포함하고, Owner 요소와 같은 정보를 포함한다. ID와 DisplayName을 감싸는 노드. | Container |
ID | CanonicalUserID | Container |
DisplayName | 주체자 이름 | String |
Owner | 멀티파트 업로드를 완료해서 만들어진 오브젝트의 소유자. | Container |
StorageClass | 업로드된 오브젝트가 저장된 저장소 종류 (STANDARD 혹은 REDUCED_REDUNDANCY) | String |
Initiated | 멀티파트 업로드를 시작한 날짜와 시간. | Date |
ListMultipartUploadsResult.Prefix | 요청 파라미터에 Prefix가 제공되었을 때, 명시된 Prefix를 포함한다. | String |
Delimiter | 요청 파라미터에 명시된 delimiter가 있으면 포함하고, 없다면 노드 자체가 포함 안됨. | String |
CommonPrefixes | 사용자가 delimiter 파라미터를 명시한다면, delimiter를 포함하는 각각의 구별되는 키인 prefix를 되돌려 받는다. | Container |
CommonPrefixes.Prefix | 요청 파라미터에 Prefix가 포함되지 않는다면, 이 요소는 delimiter 성격의 첫번째 존재를 예견하는 키의 부분 문자열을 나타낸다. 요청 파라미터에 Prefix가 포함되어 있다면, 이 요소는 prefix 이후에 delimiter의 첫번째 존재를 시작하는 키의 부분 문자열을 나타낸다. | String |
특정 에러 코드:
에러코드 | 설명 | HTTP 상태코드 |
NoSuchUpload | 명시된 멀티파트 업로드가 존재 하지 않거나, 업로드된 아이디가 불분명하거나, 또는 삭제되었거나 완료된 멀티파트 오브젝트일 경우에 이 에러코드를 러턴한다. | 404 Not Found |
PUT 명령으로 새로운 버킷을 만든다.
METHOD/URL | PUT / HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
PUT http://test567856.hbox.a3c.co.kr / HTTP/1.1 x-amz-date: Thu, 14 Jun 2012 09:58:10 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:GYObTXdb7sda/rvcvXBZ21hhSB4= Host: test567856.hbox.a3c.co.kr Content-Length: 0
응답 예제:
HTTP/1.1 200 OK Date: Thu, 14 Jun 2012 09:58:06 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fd9b5ae64f80042220000bf Vary: Accept-Encoding Content-Length: 0 Content-Type: text/html; charset=utf-8
이 동작은 access control lists(ACL) 을 사용하여 기존에 존재하는 버킷에 권한 설정을 할 수 있게 해준다. 버킷 acl 설정을 위해서는 WRITE_ACP 권한을 필요로 한다. 버킷 ACL 설정은 두가지 방법을 사용해서 버킷의 권한을 설정할 수 있다. 1. request body 에 명시. 2. request header 에 권한 명시.
METHOD/URL | PUT /?acl HTTP/1.1 |
Header | Host: bucketname.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
일반 적인 request 헤더에 다음을 추가 적으로 사용할 수 있다. 1. canned ACL 명시 하거나 권한을 수여할 대상자에 대한 권한 설정 명시.
canned ACL 은 미리 정의를 해놓은 ACL 설정이다. 각 canned ACL 는 권한 수여자와 권한에 대해 미리 정의되어 있다. 헤더에 canned ACL 을 사용하는 경우 다른 ACL 에 대해서 헤더에 명시 할 수 없다.
Name | Description |
x-amz-acl | canned ACL 을 사용하여 버킷 ACL 명시 사용가능 값: (private | public-read| public-read-write | authenicated-read) 기본값: private |
================start ghchoi: 이거는 아직 구현 되지 않은 사항입니다. ==================================================
- 버킷에 개별 적인 접근 권한을 부여 하기를 원한다면 x-amz-grant-permission 을 헤더에 추가 하여 사용 할 수 있다. 이 부분을 헤더에 추가 하게 되면 x-amz-acl 은 사용할 수 없다.
Name | Description |
x-amz-grant-read | 설정한 수령자에 대한 read 권한 부여 |
x-amz-grant-write | 설정한 수령자에 대한 write 권한 (오브젝트 생성,덮어쓰기,삭제) |
x-amz-grant-read-acp | 설정한 수령자에 대한 버킷 ACL read 권한 부여 |
x-amz-grant-write-acp | 설정한 수령자에 대한 버킷 ACL write 권한 부여 |
x-amz-grant-full-control | 설정한 수령자에 대해 위 4가지 권한 전부 부여 |
위 각 헤더는 콤마 구분자로 수령자를 추가 할 수 있다. - emailAddress : hs2 account 에 대한 이메일 값 - id: hs2 account 에 대한 canonical user id - uri: hs2 에 미리 정의된 그룹에 대해 권한을 부여하는 경우
예) x-amz-grant-read: uri="http://acs.amazonaws.com/groups/s3/LogDelivery", emailAddress="ghchoi@hostway.com", emailAddress="thkim@hostway.com"
================end ghchoi: 이거는 아직 구현 되지 않은 사항입니다. ==================================================
요청 XML:
<?xml version="1.0" encoding="utf-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xsi:type="CanonicalUser" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xsi:type="CanonicalUser" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> </Grantee> <Permission>WRITE</Permission></Grant> <Grant> <Grantee xsi:type="CanonicalUser" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> </Grantee> <Permission>READ</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
요청 elements:
Name | Description |
AccessControlList AccessControlPolicy | Grant,Grantee,Permission 을 감싸는 노드 전체 노드를 감싸는 노드 |
DisplayName | 버킷 주인의 네임 |
Grant | Grantee 와 Permission 을 감싸는 노드 |
Grantee | 수령자에 대한 type 정의 (위의 x-amz-grant-permission 쪽 참고) |
ID | 버킷 주인의 아이디 거나 수령자의 아이디 |
Owner | 버킷 주인의 id 와 name 을 감싸는 노드 |
Permission | 설정한 수령자에 대한 권한 부여 (FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP) |
예) CanonicalUser Id
<Grantee xsi:type="CanonicalUser" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ID>ID</ID> <DisplayName>ghchoi@hostway.com</DisplayName> </Grantee> 예) Email Address
<Grantee xsi:type="AmazonCustomerByEmail" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <EmailAddress>ghchoi@hostway.com</EmailAddress> </Grantee> 예) Group
<Grantee xsi:type="Group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery<URI> </Grantee>
응답 헤더 :
HTTP/1.1 200 OK Date: Tue, 19 Jun 2012 07:15:39 GMT Content-Length: 0 Content-Type: text/html; charset=utf-8 Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe0271b64f8004c780000b3
당신의 버킷 의 생애주기 관련 설정을 세팅한다. 만약 이미 동일한 설정이 존재하면 그것을 대체한다. 이 기능은 버킷에 저장된 오브젝트를 일정 주기가 되어 필요 없는 경우 자동 삭제르 원할 때 사용되는 기능이다. 예를 들어 로그의 경우 한달 정도의 로그만 필요한 경우 생애주기를 한달로 설정하게 되면 한달이 지난 로그의 경우 자동 삭제 되게 처리를 할 수 있다. 기본적으로 버킷 주인은 이 설정에 대한 권한을 기본 적으로 부여받고,다른 사람에게 권한을 줄수 도 있다. 최대 설정은 100까지 할 수 있다. 버킷에 있는 prefix 설정에 맞는 오브젝트를 만료일에 삭제를 시킨다. 버킷의 생애주기는 버킷내의 오브젝트 생성일을 기준으로 expiration day 를 더한 다음날 (시간은 정책에 따라 결정됨) 에 적용된다. 예) 생성일 2012.4.2 일 경우 Expiration day가 3일 이면 2012.4.6 일 에 적용됨. * 만약 당신이 버킷에 버전닝을 해놓은 상태라면 (활성화 or 중단) 생애주기 설정을 할 수 없다.
METHOD/URL | PUT /?lifecycle HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더:
이름 | 설명 | 필요 여부 |
Content-MD5 | 데이터에 대한 128비트 다이제스트 값으로 base64인코딩 되어 있다. 메세지 무결성 확인을 위해 반드시 사용되야 한다. | No |
Content-Length | body 길이. | No |
<?xml version="1.0"?> <LifecycleConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Rule> <Prefix>log/</Prefix> <Status>Enabled</Status> <Expiration> <Days>20</Days> </Expiration> </Rule> </LifecycleConfiguration> Update 인 경우:
<?xml version="1.0"?> <LifecycleConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Rule> <ID>4fe0356964f8004c780000cf</ID> <Prefix>test/log</Prefix> <Status>Enabled</Status> <Expiration> <Days>20</Days> </Expiration> </Rule> </LifecycleConfiguration>
요청 Elements:
Name | Description |
LifecycleConfiguration | 최대 100개의 생애주기 규칙을 감싸는 노드 |
Rule | 생이주기 룰에 대한 속성을 감싸는 노드 |
ID | 생애주기 룰을 생성하면 얻는 값이고, 업데이트와 삭제시 사용된다. |
Prefix | 생애주기 룰을 적용하고 싶은 오브젝트의 접두사. Prefix 지정안하면 모든 오브젝트를 룰에 적용 시킴 |
Status | 룰 적용 여부 (Enabled | Disabled) |
Expiration | 오브젝트를 만료할 날짜 속성을 감싸는 노드 |
Days | 만료일 단위는 day 이고 0 이 아닌 올바른 int 값 이여야 함 |
응답 헤더:
HTTP/1.1 200 OK Date: Tue, 19 Jun 2012 08:10:19 GMT Content-Length: 0 Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe033eb64f8004c780000bc
이 API 는 버킨에 로깅 관련 정보를 세팅하고 다른 사람에게 읽고 수정할 수 있는 권한을 설정 할 수 있는 PUT 동작이다. 버킷 주인은 기본적으로 모든 로그에 대한 전체 권한이 주어지고 다른 사람에게 Grantee 요청을 사용해서 권한을 줄 수 있다. 이 설정을 하면 이 버킷의 오브젝트에 해당하는 서버 관련 로그를 지정한 타켓 버킷의 해당 prefix 에 저장이 된다.
METHOD/URL | PUT /?logging HTTP/1.1 |
Header | Host: bucketname.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 XML:
<?xml version="1.0" encoding="utf-8"?> <BucketLoggingStatus xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <LoggingEnabled> <TargetBucket>ghchoitest</TargetBucket> <TargetPrefix>log</TargetPrefix> </LoggingEnabled> </BucketLoggingStatus>
요청 elements:
Name | Description |
BucketLoggingStatus | 로깅 상태 정보를 감싸는 노드 |
EmailAddress | 로그 권한을 수령할 사람의 이메일 주소 |
Grant | Grantee 와 Permission 을 감싸는 노드 |
Grantee | 수령자에 대한 type 정의 (위의 아래 Grantee Value 쪽 참고) |
LoggingEnabled | 로깅 정보를 감싸는 노드 |
Permission | 설정한 수령자에 대한 권한 부여 (FULL_CONTROL, WRITE, READ) |
TargetBucket | hs2 서버 로그가 저장되기를 원하는 버킷 이름 |
TargetGrants | Grant 정보를 감싸는 노드 |
TargetPrefix | 로그파일이 저장될 키의 prefix |
Grantee 값은 세가지로 정의 된다. - CanonicalUser Id - Customer email - hs2 에서 정의한 그룹 (예: LogDelivery)
예) CanonicalUser Id
<Grantee xsi:type="CanonicalUser" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ID>ID</ID> <DisplayName>ghchoi@hostway.com</DisplayName> </Grantee> 예) Email Address
<Grantee xsi:type="AmazonCustomerByEmail" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <EmailAddress>ghchoi@hostway.com</EmailAddress> </Grantee> 예) Group
<Grantee xsi:type="Group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery<URI> </Grantee>
응답 Header:
HTTP/1.1 200 OK Date: Thu, 21 Jun 2012 04:39:21 GMT Content-Length: 0 Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe2a57964f8004c78000173
이 API는 버킷 Policy 를 세팅하는 Put 동작이다. 버킷 Policy는 해당 버킷에 특정 사용자 또는 모든 사용자에 대해서 특정 동작을 허락하거나 막는 역할을 할 수 있다. 버킷 Policy 는 Access policy language를 사용하여 설정을 한다. 이 API 를 사용하기 위해서는 버킷 주인 이거나 버킷 주인으로 부터 PutPolicy 에 대한 권한을 부여 받아 야만 사용가능 하다. 권한이 없는 경우는 403 에러를 리턴 받는다.
METHOD/URL | PUT /?policy HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 XML:
{ "Id": "Policy1340255710151", "Statement": [ { "Sid": "Stmt1340255707364", "Action": [ "s3:DeleteObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::ghchoitest/*", "Principal": { "CanonicalUser": [ "*" ] } } ] }
응답 Header:
HTTP/1.1 200 OK Date: Fri, 22 Jun 2012 01:17:12 GMT Content-Length: 0 x-amz-request-id: 4fe3c79864f8004c7800017f
이 API 는 리퀘스트 페이먼트 의 리소스를 세팅하는 put 동작을 수행한다. 기본적으로 버킷 주인이 버킷의 다운로드에 대한 과금을 지불하지만 이 설정을 통해서 다운로드한 사람에게 다운로드에 대한 과금을 지불 하게 설정 할 수 있다.이 설정은 버킷 주인만이 설정 가능하다.
METHOD/URL | PUT /?requestPayment HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 XML:
<RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Payer>Requester</Payer> </RequestPaymentConfiguration>
요청 elements:
Name | Description |
RequestPaymentConfiguration | Payer 를 감싸는 노드 |
Payer | 과금에 대한 지불할 대상. (Requester | BucketOwner) |
응답 Header:
HTTP/1.1 200 OK Content-Length: 0 Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe1607764f8004c770000e8
이 API 는 기존 사용되는 버킷에 버전을 설정하는 put 동작이다. 이 설정을 세팅하기 위해서는 버킷 주인만이 설정 가능하다. 버저닝은 오브젝트의 내용을 버전별로 관리를 해주기 때문에 실수로 인해 오브젝트 내용이 변경된 경우 손쉽게 복구 할 수 있게 해주는 기능이다.
버킷에 버전 정보 세팅은 두가지 상태 값을 세팅 할 수 있다.
Enabled (활성화) : 버킷 안에 존재하는 오브젝트에 대한 버전닝을 활성화 시키고 각 오브젝트에 유니크한 버전 id를 할당 한다. Suspended(중지) : 버전닝을 중단 시키고 버킷안에 오브젝들의 버전 id를 null로 세팅한다.
METHOD/URL | PUT /?versioning HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
#TODO: place a table
요청 XML:
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> <MfaDelete>Disabled</MfaDelete> </VersioningConfiguration>
VersioningConfiguration | 버전 상태를 감싸는 노드 |
Status | 버킷 버전닝 상태를 세팅하는 값 (Suspended | Enabled) |
응답 Header:
HTTP/1.1 200 OK Date: Wed, 20 Jun 2012 04:39:02 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe153e664f8004c780000e7
이 API는 웝 사이트 설정에 설정값을 세팅하기 위한 put 동작이다. 이 설정을 통해 버킷 이름과 hs2 의 dns 정보의 결합을 통해 설정한 웹 페이지를 제공을 한다. 이 API는 PutBucketWebsite 권한을 필요로 한다. 기본적으로 버켓 주인은 이 설정을 할 수 있고, 다른 사용자에게 버킷 정책을 통해 세팅 권한을 부여 할수 있다.
세팅은 index 페이지 파일과 error 페이지에 대한 html 파일 정보를 세팅한다.
METHOD/URL | PUT /?website HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 XML:
<?xml version="1.0"?> <WebsiteConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <IndexDocument> <Suffix>index.html</Suffix> </IndexDocument> <ErrorDocument> <Key>error.html</Key> </ErrorDocument> </WebsiteConfiguration>
요청 elements:
WebsiteConfiguration | 전체 요청을 감싸는 노드 |
IndexDocument | Suffix 를 감싸는 노드 |
Suffix | 이 접두사는 웹사이트 엔드 포이트 디렉토리뒤에 붙게 된다. 예를 들어 bucketname/test/ 요청인 경우 키 이름은 test/index.html 인 값으로 전달된다. |
ErrorDocument | Key 속성을 감싸는 노드 |
Key | 4XX 에러 발생시 보여지는 에러 도큐먼트 페이지이다. |
응답 header:
HTTP/1.1 200 OK Date: Wed, 20 Jun 2012 04:39:02 GMT Content-Length: 0 Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe153e664f8004c780000e7
멀티파트 업로드를 중단한다. 업로드가 중단되고 난 후에는 중단할 때 사용한 업로드 아이디로 파트를 추가할 수 없다. 만약 파트를 업로드 하는 중에, 중단 API를 호출하였을 경우에 업로드 중단이 완전히 되었는지 확인하기 위해서 이 API 를 여러분 호출할 필요가 있다. 멀티파트 업로드가 성공적으로 중단되었으면, 업로드된 파트들의 저장공간은 없어질 것이다.
METHOD/URL | DELETE /objectName?uploadId=UploadId HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
이전에 업로드된 파트들을 가지고 멀티파트 업로드를 완료한다. 먼저, 멀티파트 업로드를 시작하고, 업로드 파트 API를 사용해서 파트들을 성공적으롱 업로드 한다. 그 후, 이 API를 호출한다. 이 API를 호출 할때 파트리스트의 각 파트에 ParNumber와 ETag를 추가해서 호출해야만 업로드가 성돌한다. 이때, PartNumber를 오름차순으로 정렬해서 이 API를 사용해서 파트들을 PartNumber의 오름차순으로 정렬해서 새로운 오브젝트를 생성하고 업로드를 완료한다.
METHOD/URL | POST /objectName?uploadId=UploadId HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 XML:
<CompleteMultipartUpload> <Part> <PartNumber>PartNumber</PartNumber> <ETag>ETag</ETag> </Part> ... </CompleteMultipartUpload>
요청 elements:
이름 | 설명 | 타입 | 필요여부 |
CompleteMultipartUpload | 요청을 위한 컨테이너. Part 자식 요소 포함. | Container | Yes |
Part | 이전의 특정 업로드 파트와 연관된 요소를 위한 컨테이너. PartNumber, ETag 자식요소 포함. | Container | Yes |
PartNumber | 파트를 식별하는 Part Number | Integer | Yes |
ETag | 파트가 업로드 되었을 때 되돌려 받는 요청을 위한 노드 Entity tag | String | Yes |
POST http://test9.hbox.a3c.co.kr /multipart_005?uploadId=db4d76d3adbbd38dbad38dbaef4d34 HTTP/ 1.1
BODY :
<CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"bc00541d80512bc0179f9f048674fc02"</ETag> </Part> <Part> <PartNumber>2</PartNumber> <ETag>"d022eb6d05e0fa6edb57eda8ada5af0c"</ETag> </Part> <Part> <PartNumber>3</PartNumber> <ETag>"a479f6dcc969210bc3fe02512ccd00f0"</ETag> </Part> </CompleteMultipartUpload>
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Location></Location> <Bucket>multipart</Bucket> <Key>multipart_01</Key> <ETag>"b2be81691d4a29532fd42a8f8fd5626c"</ETag> </CompleteMultipartUploadResult>
응답 elements:
이름 | 설명 | 타입 |
CompleteMultipartUploadResult | Location, Bucket, Key, ETag 을 감싸는 노드 | Container |
Location | 새로 만들어진 오브젝트를 식별하는 URI | URI |
Bucket | 새로 만들어진 오브젝트를 포함하는 Bucket의 이름 | String |
Key | 새로 만들어진 오브젝트 키 | String |
ETag | 새로 만들어진 오브젝트 데이터를 식별하는 Entity tag. 다른 오브젝트 데이터를 가지는 오브젝트들은 다른 entity tag들을 가질 것이다. entity tag는 불투명한 문자열이다. | String |
특정 에러 코드:
에러코드 | 설명 | HTTP 상태코드 |
InvalidPart | 명시된 파트를 찾을 수 없거나, 득다 존재 하지 않거나, 업로드된 아이디가 불분명하거나, 또는 삭제되었거나 완료된 멀티파트 오브젝트일 경우에 이 에러코드를 러턴한다. | 400 Bad Request |
InvalidPartOrder | 파트리스트가 PartNumber의 크기 순서대로 나열되지 않았을 때 이 에러코드를 리턴한다. | 404 Bad Request |
NoSuchUpload | 명시된 멀티파트 업로드가 존재 하지 않거나, 업로드된 아이디가 불분명하거나, 또는 삭제되었거나 완료된 멀티파트 오브젝트일 경우에 이 에러코드를 러턴한다. | 404 Not Found |
한 번의 HTTP 요청으로 여러 오브젝트를 한꺼번에 삭제하도록 한다. 여러 오브젝트를 한꺼번에 지우기 위해 오브젝트 키값을 사용한다. XML에 지우고자 하는 오브젝트 키 이름을 1000개 까지 포함시킬 수 있다. 버킷에 버전 기능을 설정했다면 오브젝트 키 이름과 함께 오브젝트의 특정 버전 id를 리스트에 포함시킬 수 있다. 각각의 삭제 결과를 성공과 실패로 리턴한다. 존재하지 않는 오브젝트에 대해서도 삭제 성공을 리턴한다.
verbose 모드와 quiet 모드 두 가지를 사용할 수 있다. verbose 모드를 기본으로 동작하며, verbose의 경우 응답의 결과에 모든 키에 대한 작업 결과를 포함한다. quiet 모드의 경우 응답의 결과가 에러인 키 만을 결과에 포함한다.
요청 body가 변경 되지 않았음을 확인하기 위해 헤더에는 Content-Md5를 포함해야 한다.
METHOD/URL | POST /?delete |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 필요 여부 |
Content-MD5 | 데이터에 대한 128비트 다이제스트 값으로 base64인코딩 되어 있다. 메세지 무결성 확인을 위해 반드시 사용되야 한다. | No |
Content-Length | body 길이. | No |
요청 XML:
이름 | 설명 | 필요 여부 |
Delete | 요청 컨테이너 | Yes |
Quiet | quiet 모드를 나타낸다. quiet모드를 사용할 경우 반드시 true값을 가져야 한다. | No |
Key | 삭제할 오브젝트 키 | Yes |
VersionId | 삭제할 오브젝트의 특정 버전 id | No |
응답 XML:
이름 | 설명 |
DeleteResult | 응답 컨테이너 |
Deleted | 삭제 성공 컨테이너, 오브젝트가 성공적으로 삭제 됐음을 확인할 수 있다. |
Key | 삭제 시도한 오브젝트 키 이름 |
VersionId | 오브젝트 버전 id |
DeleteMarker | true일 경우 삭제 표시자를 액세스 했음을 나타낸다. delete 작업으로 삭제 표시자가 만들어지거나 지워졌을때 응답에 표함된다. |
DeleteMarkerVersionId | 삭제표시자의 버전 id |
Error | 실패한 결과를 나타내는 컨테이너 |
Code | 실패한 삭제 결과 상태 코드 |
Message | 에러 설명 |
요청 예제:
POST http://test99999.hbox.a3c.co.kr /?delete HTTP/1.1 Content-Type: multipart/form-data Content-MD5: zC1yl+zbx/lBxPCin98ltA== x-amz-date: Thu, 28 Jun 2012 06:23:05 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:5hDqGEeqScWurmmC5V5afcqAf+8= Host: test99999.hbox.a3c.co.kr Content-Length: 149 Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?> <Delete> <Quiet>true</Quiet> <Object><Key>sample.txt</Key></Object> <Object><Key>test2.txt</Key></Object> </Delete>
응답 예제:
HTTP/1.1 200 OK Date: Thu, 28 Jun 2012 06:23:03 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4febf84764f80036470003fe Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </DeleteResult>
오보젝트의 null 버전을 삭제하고 삭제 표시를 넣는다. null 버전이 없으면 아무것도 오브젝트를 지우지 않는다. 특정 버전을 지우기 위해서는 버킷 소유자 권한이 필요하다.
METHOD/URL | DELETE /objectName HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 필요 여부 |
x-amz-mfa | Not yet implemented |
응답 헤더(Header):
이름 | 설명 |
x-amz-delete-marker | 버전을 사용하는 오브젝트의 경우, 지워진 오브젝트가 삭제 표시인지 아닌지를 나타낸다. 보통의 경우, 삭제 표시가 생겼는지 여부를 나타낸다. |
x-amz-version-id | DELETE결과로 만들어진 삭제 표시의 버전 id를 리턴한다. 특정 오브젝트 버전을 지울 경우, 삭제된 오버젝트 버전의 버전 id를 리턴한다. |
요청 예제:
DELETE http://test99999.hbox.a3c.co.kr /test.txt HTTP/1.1 x-amz-date: Tue, 26 Jun 2012 08:57:52 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:4Y4509QrKFkKKqtei/GlRq0fRMc= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 204 NO CONTENT Date: Tue, 26 Jun 2012 08:57:50 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4fe9798e17416a3ab2000001 Content-Length: 0 Vary: Accept-Encoding Content-Type: text/html; charset=utf-8
버킷내에 있는 오브젝트를 다운로드 한다. 다운로드 하기 위해서는 READ 권한이 필요하다. 오브젝트의 다른 버전을 다운로드 하기 위해서는, versionId를 사용해서 다운로드 하려는 버전을 지정해야 한다. x-amz-delete-marker의 값이 true일 경우에는 오브젝트가 지워진 것으로 간주한다.
METHOD/URL | GET /objectName HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 필요 여부 |
Range | 오브젝트의 특정 범위를 다운로드하도록 한다. | No |
If-Modified-Since | 특정 시간 이후로 오브젝트가 변경됐을 경우에만 리턴한다. 변경 되지 않았을 경우 304(not modified)를 리턴한다. | No |
If-UnModified-Since | 특정 시간 이후로 오브젝트가 변경돼지 않았을 경우에만 리턴한다. 변경 됐을 경우 412(precondition failed)을 리턴한다. | No |
If-Match | Etag값이 일치 할 때만 오브젝트를 리턴한다. 일치하지 않을 경우 412(변경 없음)을 리턴한다. | No |
If-None-Match | Etag값이 다를 경우에만 오브젝트를 리턴한다. 일치할 경우 304(변경 없음)를 리턴한다. | No |
파라미터:
파라미터 | 설명 | 필요 여부 |
response-content-type | 응답의 content-type 헤더 값을 설정한다. | No |
response-content-language | 응답의 content-language 헤더 값을 설정한다. | No |
response-expires | 응답의 expires 헤더 값을 설정한다. | No |
response-cache-control | 응답의 cache-control 헤더 값을 설정한다. | No |
response-content-disposition | 응답의 content-disposition 헤더 값을 설정한다. | No |
response-content-encoding | 응답의 content-encoding 헤더 값을 설정한다. | No |
응답 헤더(Header):
헤더 | 설명 |
x-amz-delete-marker | 오브젝트가 삭제 표시인지 아닌지를 지정한다. |
x-amz-expiration | 오브젝트 만료 설정이 돼있을 경우를 나타낸다. expire-date와 rule-id 키값을 포함한다. |
x-amz-server-side-encryption | 오브젝트가 서버 암호화를 사용하고 있을 경우를 나타내며, 암호화에 사용중인 알고리즘 값을 담는다. |
x-amz-version-id | 오브텍트가 버전 id를 가질경우 버전 id를 리턴한다. |
요청 예제:
GET http://hans.hbox.a3c.co.kr /CentOS%2D5.6%2Dx86%5F64%2DLiveCD.iso HTTP/1.1 x-amz-date: Mon, 25 Jun 2012 05:24:48 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:EnhDZZEOd8xgchkN5vCPJGsqLQY= Host: hans.hbox.a3c.co.kr Connection: Keep-Alive
응답 예제:
HTTP/1.1 200 OK Date: Mon, 25 Jun 2012 05:24:44 GMT Server: Apache/2.2.16 (Debian) x_amz_meta_cb_modifiedtime: Mon, 25 Apr 2011 09:06:35 GMT Etag: "7449589dc0769d4e027832bfe3f6bfba" x-amz-request-id: 4fe7f61c64f80038f5000020 Content-Length: 733669376 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: application/octet-stream
오브젝트의 접근제어 정보를 리턴한다. 정보를 조회하기 위해서는 READ_ACP 권한이 있어야 한다. 리턴한 접근제어 정보는 오브젝트의 최신 버전에 대한 것이다. 특정 버전에 대한 접근 제어 정보를 조회하려면 versionId를 사용해야 한다.
METHOD/URL | /objectName?acl HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 XML:
이름 | 설명 |
AccessControlList | Grant, Grantee, Permission을 포함하는 컨테이너 |
AccessControlPolicy | 오브젝트 ACL 권한 요소들을 Grantee별로 갖는 컨테이너 |
DisplayName | 버킷 소유주 디스플레이 이름 |
Grant | Grantee와 Grantee에 대한 권한들을 포함하는 컨테이너 |
Grantee | 권한 설정 대상 |
ID | 버킷 소유자 또는 Grantee의 ID |
Owner | 버킷 소유자의 디스플레이 이름과 ID를 포함하는 컨테이너 |
Permission | Grantee에대한 권한을 지정 |
요청 예제:
GET http://test99999.hbox.a3c.co.kr /test.txt?acl HTTP/1.1 x-amz-date: Wed, 27 Jun 2012 06:17:44 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:IySKTNMH8QVppsiKDKASvb2cQtk= Host: test99999.hbox.a3c.co.kr y
응답 예제:
HTTP/1.1 200 OK Date: Wed, 27 Jun 2012 06:17:43 GMT Server: Apache/2.2.16 (Debian) x-amz-request-id: 4feaa58717416a3ab0000078 Transfer-Encoding: chunked Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy> <Owner> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>Test Account</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>None</DisplayName> </Grantee> <Permission>READ</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>None</DisplayName> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>None</DisplayName> </Grantee> <Permission>READ_ACP</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>None</DisplayName> </Grantee> <Permission>WRITE_ACP</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>q07Z8HJyxJOlcdGn//4GJLrYKnI=</ID> <DisplayName>None</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI> </Grantee> <Permission>READ</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI> </Grantee> <Permission>READ_ACP</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI> </Grantee> <Permission>WRITE_ACP</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ_ACP</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>WRITE_ACP</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
오브젝트 자체가 아닌 오브젝트의 메타정보를 리턴한다. 응답에 body가 없다는 점을 제외하면 GET 동작과 동일한 응답을 가진다. READ 권한이 필요하다.
METHOD/URL | HEAD /objectName HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 필요 여부 |
Range | 오브젝트의 특정 범위를 다운로드하도록 한다. | No |
If-Modified-Since | 특정 시간 이후로 오브젝트가 변경됐을 경우에만 리턴한다. 변경 되지 않았을 경우 304(not modified)를 리턴한다. | No |
If-UnModified-Since | 특정 시간 이후로 오브젝트가 변경돼지 않았을 경우에만 리턴한다. 변경 됐을 경우 412(precondition failed)을 리턴한다. | No |
If-Match | Etag값이 일치 할 때만 오브젝트를 리턴한다. 일치하지 않을 경우 412(변경 없음)을 리턴한다. | No |
If-None-Match | Etag값이 다를 경우에만 오브젝트를 리턴한다. 일치할 경우 304(변경 없음)를 리턴한다. | No |
응답 헤더(Header):
헤더 | 설명 |
x-amz-expiration | 오브젝트 만료 설정이 돼있을 경우를 나타낸다. expire-date와 rule-id 키값을 포함한다. |
x-amz-meta-* | 오브젝터 생성시 입력했던 메타 정보를 x-amz-meta 접두어를 붙여서 리턴한다. |
x-amz-missing-meta | x-amz-meta 헤더로 받지 못한 메타 정보 엔트리 수를 나타낸다. 일부 메타 정보는 HTTP 헤더가 허용하지 않는 이유로 주고 받지 못할 수 있다 |
x-amz-server-side-encryption | 오브젝트가 서버 암호화를 사용하고 있을 경우를 나타내며, 암호화에 사용중인 알고리즘 값을 담는다. |
x-amz-version-id | 오브텍트가 버전 id를 가질경우 버전 id를 리턴한다. |
요청 예제:
HEAD http://test99999.hbox.a3c.co.kr /NUnit%2D2.5.10.11092.msi HTTP/1.1 x-amz-date: Wed, 27 Jun 2012 08:36:48 GMT Authorization: AWS AKIAJT5ISXOUG5KVB2NW:vZUE+KPU4zgFgdSse/kW7ubbTX0= Host: test99999.hbox.a3c.co.kr
응답 예제:
HTTP/1.1 200 UNKNOWN STATUS CODE Date: Wed, 27 Jun 2012 08:36:44 GMT Server: Apache/2.2.16 (Debian) ETag: "1fb891ffd60b5abe03ce668ae0566a75" x-amz-request-id: 4feac61c64f80036480000fa Content-Type: application/octet-stream
오브젝트 멀티마트 업로드를 시작하고, 멀티파트 업로드 시 필요한 업로드 아이디를 되돌려 준다. 또한, 되돌려 받은 업로드 아이디는 멀티파트 업로드를 끝낼 때와 멀티파트를 중단할 때도 사용한다.
METHOD/URL | POST /objectName?uploads HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
응답 헤더(Header):
HTTP/1.1 200 OK x-amz-request-id: 4fe922420cd20b18e4000155 Content-Type: application/xml Transfer-Encoding: chunked Date: Tue, 26 Jun 2012 02:45:23 GMT Server: WEbSimpleStorage
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Bucket>multipart</Bucket> <Key>multipart_01</Key> <UploadId>db4d76d3adbad36e39db6f7ceb4d34</UploadId> </InitiateMultipartUploadResult>
멀티파트 오브젝트 리스트를 조회한다. 멀티파트 시작시 부여받은 업로드아이드를 표함해야한다. 이 API는 기본적으로 1,000개의 업로드된 파트들을 되돌려주며, 또한 이 값이 최대값이다. 1,000개 내에서 max-parts 파라미터로 원하는 수만큼 갯수를 제한할 수 있다. 만약 업로드된 파트들 수가 1,000개를 넘어간다면, IsTruncated 필드는 true 값이 되고, NextPartNumberMarker 필드는 이전 응당 값과 part-number-marker 파라미터로 값을 추정할 수 있다.
METHOD/URL | GET /objectName?uploadId=UploadId HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
파라미터:
이름 | 설명 | 타입 | 필요여부 |
uploadId | 오브젝트 멀티 파트 시작시 되돌려 받은 Id 값. | String | Yes |
max-parts | 되돌려 받고 싶은 파트의 수를 성정할 수 있다. 디폴트는 1,000. | String | No |
part-number-maker | 되돌려 받고 싶은 첫번째 파트의 수를 설정한다. 설정한 수의 다음 수부터 시작한다. | String | No |
응답 헤더(Header):
HTTP/1.1 200 OK x-amz-request-id: 4fea8bba0cd20b22a8000046 Content-Type: application/xml Transfer-Encoding: chunked Date: Wed, 27 Jun 2012 04:27:40 GMT Server: WEbSimpleStorage
응답 XML:
<?xml version="1.0" encoding="UTF-8"?> <ListPartsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Bucket>test9</Bucket> <Key>multipart_005</Key> <UploadId>db4d76d3adbbd38dbad38dbaef4d34</UploadId> <Initiator> <ID>65a011a29cdf8ec533ec3d1ccaae921c</ID> <DisplayName>None</DisplayName> </Initiator> <Owner> <ID>65a011a29cdf8ec533ec3d1ccaae921c</ID> <DisplayName></DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> <NextPartNumberMarker>700</NextPartNumberMarker> <MaxParts>3</MaxParts> <IsTruncated>false</IsTruncated> <Part> <PartNumber>100</PartNumber> <LastModified>2012-06-27T04:26:53.344Z</LastModified> <ETag>"d022eb6d05e0fa6edb57eda8ada5af0c"</ETag> <Size>67</Size> </Part> <Part> <PartNumber>300</PartNumber> <LastModified>2012-06-27T04:26:27.975Z</LastModified> <ETag>"bc00541d80512bc0179f9f048674fc02"</ETag> <Size>42</Size> </Part> <Part> <PartNumber>700</PartNumber> <LastModified>2012-06-27T04:27:15.214Z</LastModified> <ETag>"a479f6dcc969210bc3fe02512ccd00f0"</ETag> <Size>93</Size> </Part> </ListPartsResult>
요청 elements:
이름 | 설명 | 타입 |
ListPartsResult | Bucket, Key, UploadId, Initiator, Owner, StorageClass, PartNumberMarker, NextPartNumberMarker, MaxParts, IsTruncated, Part 을 감싸는 노드 | Container |
Bucket | 멀티파트 업로드가 시작된 버킷의 이름 | String |
Key | 멀티파트 업로드를 시작한 오브젝트 키 | String |
UploadId | 멀티파트 업로드의 고유한 아이디 값 | String |
Initiator | 멀티파트 업로드를 시작한 사용자의 정보를 보여주는 노드. ID와 DisplayName을 감싸는 노드. | Container |
ID | CanonicalUserID | String |
DisplayName | 주체자 이름 | String |
Owner | 멀티파트 업로드를 완료해서 만들어진 오브젝트의 소유자. | Container |
StorageClass | 업로드된 오브젝트가 저장된 저장소 종류 (STANDARD 혹은 REDUCED_REDUNDANCY) | String |
PartNumberMarker | 요청 파라미터에 part-number-maker 에 세팅되어 있는 값 | Integer |
NextPartNumberMarker | part-number-maker와 max-parts 파라미터로 NextPartNumberMarker값 계산. | Integer |
MaxParts | 업로드된 파트의 최대값 | Integer |
IsTruncated | 되돌려 받은 파트 리스트의 수보다 더 많은 파트들의 존재유무. True 이면 더 많이 존재. False 이면 되돌려 받은 리스트의 수가 전체 갯수임 | Boolean |
Part | 각각의 파트를 감싸는 노드 | String |
PartNumber | 파트의 고유 숫자 | Integer |
LastModified | 파트가 업로드 됐을때 날짜와 시간 | Date |
ETag | 파트가 업로드 됐을때 되돌려 받은 ETag | String |
Size | 업로드된 파트의 크기 | Integer |
특정 에러 코드:
에러코드 | 설명 | HTTP 상태코드 |
NoSuchUpload | 명시된 멀티파트 업로드가 존재 하지 않거나, 업로드된 아이디가 불분명하거나, 또는 삭제되었거나 완료된 멀티파트 오브젝트일 경우에 이 에러코드를 러턴한다. | 404 Not Found |
HTML 폼을 이용해서 특정 Bucket에 하나의 Object를 추가한다. POST는 object를 버킷에 추가하는 방법중 하나로 브라우저 기반의 업로드를 가능하게 한다. HTTP 헤더을 통해서 PUT에서 전달되는 파라미터들은 multpart/form-data 폼 필드로 인코딩되어 POST 메시지 바디로 전달된다. Object를 Bucket에 추가하기기 위해서는 해당 Bucket에 대한 WRITE 권한이 있어야 한다.
METHOD/URL | POST /keyName HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
폼 필드:
이름 | 설명 | 필요여부 |
AWSAccessKeyId | 해당 버킷 소유자의 AccessKey Id
|
조건부 |
Cache-Control, Content-Type, Content-Disposition, Content-Encoding | REST용 헤더
|
|
expires | 만료기간 1/1000 초
|
|
file | 파일 혹은 텍스트 내용으로 폼에서 마지막 필드여야 하며 한번에 하나의 파일만 올릴 수 있다.
|
|
key | 업로드하는 object의 키 사용자가 업로드하는 파일이름을 키로 사용하고 싶은 경운 ${filename} 변수를 사용하면 된다.
|
아래 명령으로 오브젝트 및 오브젝트의 새 버젼을 생성할 수 있습니다.
METHOD/URL | PUT /objectName HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
- Cache-Control:
- HTTP 프로토콜의 Cache-Control 기능을 구현한다. 선택가능
- Content-Disposition:
- HTTP 프로토콜의Content-Disposition 기능을 구현한다. 선택가능
- Content-Encoding:
- HTTP 프로토콜의Content-Disposition 기능을 구현한다. 선택가능
- Content-Length:
- HTTP 프로토콜의Content-Length 기능을 구현한다. 필수
- Content-MD5:
- TBD
- Content-Type:
- TBD
- Expires:
- TBD
- x-amz-acl:
- TBD
- x-amz-meta-:
- TBD
- x-amz-server-side-encryption:
- TBD
오브젝트 접근제어 설정을 한다. 접근 제어 설정을 위해서 WRITE_ACP 권한을 가져야 한다. 요청 body에 접근제어 설정을 지정하거나, 요청 헤더에 권한을 지정하는 두 방식 중 하나를 선택해 사용할 수 있다.
오브젝트의 가장 최신 버전에 접근 제어 설정이 되며, 특정한 오브젝트 버전에 접근 제어 설정을 하기 위해서는 versionId를 사용해야 한다.
METHOD/URL | PUT /ObjectName?acl HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 필요 여부 |
x-amz-acl | 오브젝트에 적용할 미리 정의된 ACL 유효 값: private, public-read, public-read-write, authenticated-read bucket-owner-read, bucket-owner-full-control | No |
미리 정의된 ACL은 다음과 같다.
ACL | 적용 대상 | ACL 권한 |
private | 버킷, 오브젝트 | 소유자가 FULL_CONTROL을 갖고 다른 소유자는 접근 권한이 없음 |
public-read | 버킷, 오브젝트 | 소유자가 FULL_CONTROL을 갖는다. AllUsers 그룹은 READ 권한을 갖는다. |
public-read-write | 버킷, 오브젝트 | 소유자가 FULL_CONTROL을 갖는다. AllUsers 그룹은 READ, WRITE 권한을 갖는다. |
authenticated-read | 버킷, 오브젝트 | 소유자가 FULL_CONTROL을 갖는다. AuthenticatedUsers 그룹은 READ 권한을 갖는다. |
bucket-owner-read | 오브젝트 | 오브젝트 소유자가 FULL_CONTROL을 갖는다. 버킷 소유자는 READ 권한을 갖는다. 버킷 생성시에 사용될 경우에는 무시된다 |
bucket-owner-full-control | 오브젝트 | 오브젝트 소유자와 버킷 소유자 모두 FULL_CONTROL을 갖는다. 버킷 생성시에 사용될 경우에는 무시된다. |
log-delivery-write | 버킷 | LogDelivery 그룹이 버킷에 대해 WRITE, READ_ACP 권한을 갖는다 |
미리정의된 ACL이 아닌 개별적인 접근 권한을 오브젝트에 설정하려면, 다음 헤더를 사용한다. 개별적인 ACL을 사용할 경우, x-amz-acl 헤더를 사용할 수 없다.
이름 | 설명 | 필요 여부 |
x-amz-grant-read | 버킷내의 오브젝트들의 리스트를 볼 수 있는 권한 | No |
x-amz-grant-write | 버킷에 접근 권한을 준다. 오브젝트에 적용할 수 없다. | No |
x-amz-grant-read-acp | 버킷 ACL에 대한 읽기 권한을 준다. | No |
x-amz-grant-write-acp | 버킷에 쓰기 권한을 준다. | No |
x-amz-grant-full-control | 버킷에 대한 READ, WRITE, READ_ACP, WRITE_ACP 권한을 준다. | No |
이름 | 설명 |
AccessControlList | ACL 정보를 담는 컨테이너 |
AccessControlPolicy | Grantee별로 오베브젝트 ACL 설정 엘리먼트들을 담는 컨테이너 |
DisplayName | 버킷 소유자를 나타내는 스크린 이름 |
Grant | Grantee의 권한을 담는 컨테이너 |
Grantee | 권한 설정 대상 유효값: DisplayName, EmailAddress, AuthenticatedUser |
ID | 버킷 소유자 또는 Grantee의 ID |
Owner | 버킷 소유자 디스플레이 이름과 ID를 담는 컨테이너 |
Permission | Grantee에 대한 권한 지정 |
응답 헤더(Header):
이름 | 설명 | 필요 여부 |
x-amz-version-id | ACL을 적용할 오브젝트에 적용할 미리 정의된 ACL. | No |
저장되어 있는 오브젝트의 복사본을 만든다. GET을 한 다음 PUT을 하는 것과 같다. x-amz-copy-source 헤더를 사용해서 소스 오브젝트의 복사본을 만든다. 5기가 바이트 크기 까지의 오브젝트만 복사할 수 있고, 이 보다 큰 경우에는 multipart upload API를 사용한다.
원본과 동일 한 메타데이터 정보를 복사하거나 새 메타 데이터를 복사본에 지정할 수 있다. ACL은 복사되지 않고 private으로 지정된다. 원본에 대해 READ 권한이 필요하고, 복사본을 쓸 버킷에 WRITE권한이 있어야 한다.
다음 헤더를 사용해서 조건에 따라 오브젝트를 복사할 수 있다. Etag 일치 조건에 따라 x-amz-copy-source-if-match, x-amz-copy-source-if-none-match 특정 날짜이후 또는 이전에 수정 됐는지에 따라 x-amz-copy-source-if-unmodified-since, x-amz-copy-source-if-modified-since
기본적으로로 x-amz-copy-source는 오브젝트의 마지막 버전을 가리킨다. 오브젝트의 특정 버전을 복사하려면 versionId 면를 사용해야 한다.
METHOD/URL | PUT /destinationObject |
Header | Host: hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 필요 여부 |
x-amz-copy-source | 소스 버킷과 오브젝트의 키 이름, 슬래시(/)로 구분 문자열은 URL 인코딩되어야 한다. 유효한 버킷을 사용해아 하며 소스 오브젝트에 READ 권한이 필요하다 | YES |
x-amz-metadata-directive | 메타데이터를 소스 오브젝트로 부터 가져올지 여부를지정한다. 소스 오브젝트로 부터 복사할 경우 버전 id를 제외한 정보가 복사된다. COPY와 REPLACE이외 값은 400 에러를 받는다. 오브젝트를 복사하려면 MetadataDirective헤더를 지정하고 그 값으로 REPLACE를 사용해야 한다. | No |
x-amz-copy-source-if-match |
|
No |
x-amz-copy-source-if- none-match |
|
No |
x-amz-copy-source-if- unmodifed-since | 특정 시간 이후로 수정되지 않았을 경우 오브젝트를 복사한다. 그렇지 않을 경우 412 HTTP status code 에러를 받는다. | No |
x-amz-copy-source-if modified-since | 특정 시간 이후로 수정됐을 경우 오브젝트를 복사한다. 그러힞 않을 경우 412 HTTP status code 에러를 받는다. | No |
x-amz-server- side-encryption | 오브젝트를 복사할 때 사용할 서버 사이드 알고리즘을 지정한다. | No |
파라미터:
요청 파라미터 없음
요청 XML:
요청 XML 없음
응답 헤더(Header):
이름 | 설명 |
x-amz-expiration | 오브젝트 만료 기한이 설정됐을 경우 포함된다. expire-date와 rule-id 값의 쌍을 리턴한다. rule-id는 URL인코딩된 값이다. |
x-amz-copy-source-version-id | 복사된 소스 오브젝트의 버전 아이디 |
x-amz-server-side-encription | 서버 사이드 알고리즘을 사용했을 경우 확인용으로 포함된다. |
x-amz-version-id | 대상 버킷 내에서의 오브젝트 버전 |
응답 XML:
이름 | 설명 |
CopyObjectResult | 모든 응답 요소를 담는 컨테이너 |
Etag | 새 오브젝트의 Etag를 리턴한다. Etag는 메터데이터를 제외한 오브젝트의 내용만을 반영한다. |
LastModifed | 오브젝트가 마지막으로 변경된 날짜를 리턴한다. |
데이터 소스로써 존재하는 오브젝트를 복사함으로써 파트를 업로드 한다.x-amz-copy-source와 x-amz-copy-source-range를 요청 헤더에 추가해서 데이터 소스를 추가할 수 있고, 바이트 범위를 설정할 수 있다. 어떤 파트라도 업로드하기 전에 멀티파트 업로드를 시작해야만 한다. 첫번째 요청에 대한 응답으로, Hostway Storage Service(HS2)는 유일한 식별자인 Upload ID를 되돌려주는데, 업로드 파트 요청에 꼭 포함해야만 한다.
METHOD/URL | PUT /objectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1 |
Header | Host: bukcetName.hbox.a3c.co.kr |
x-amz-copy-source: /source_bucket/sourceObject | |
x-amz-copy-source-range:bytes=first-last | |
x-amz-copy-source-if-match: etag | |
x-amz-copy-source-if-none-match: etag | |
x-amz-copy-source-if-unmodified-since: time_stamp | |
x-amz-copy-source-if-modified-since: time_stamp | |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 타입 | 필요여부 |
x-amz-copy-source | 소스 버킷의 이름과 소스 오브젝트 키 이름을 슬래쉬('/')에 의해서 구분짓는다. | String | Yes |
x-amz-copy-source-range | 소스 오브젝트로부터 복사하기 위한 바이트의 범위. 범위 값은 bytes=first-last의 폼으로 사용해야만 한다. 예를 들자면, bytes=0-9는 소스 오브젝트의 처음부터 10 바이트만 복사함을 의미한다. 소스 오브젝트가 5GB보다 클 경우에만 바이트의 범위만큼 복사가능하다. 그리고, 전체 소스 오브젝트를 복사하는 경우에는 이 요청 헤더를 요구하지 않는다. | Integer | No |
다음의 조건부 헤더는 x-amz-copy-source헤더가 명시되어 있는 오브젝트 기반이다.
이름 | 설명 | 타입 | 필요여부 |
x-amz-copy-source-if-match | 소스 오브젝트의 ETag가 명시된 값과 일치한다면 복사를 수행하라. 만약 일치하지 않다면, HS2는 HTTP 상태코드가 412인 필수전제 조건 실패 에러를 되돌려 준다. | String | No |
x-amz-copy-source-if-match-none | 소스 오브젝트의 ETag가 명시된 값과 다르다면 복사를 수행하라. 만약 일치한다면, HS2는 HTTP 상태코드가 412인 필수전제 조건 실패 에러를 되돌려 준다. | String | No |
x-amz-copy-source-if-unmodified-since | 헤더에 명시된 시간 이후로 소스 오브젝트가 수정되지 않았다면, 복사를 수행하라. 만약 일치하지 않다면, HS2는 HTTP 상태코드가 412인 필수전제 조건 실패 에러를 되돌려 준다. | String | No |
x-amz-copy-source-if-modified-since | 헤더에 명시된 시간 이후로 소스 오브젝트가 수정되었다면, 복사를 수행하라. 만약 일치하지 않다면, HS2는 HTTP 상태코드가 412인 필수전제 조건 실패 에러를 되돌려 준다. | String | No |
Header | x-amz-copy-source: /bucket/object?versionId=VersionId |
응답 헤더(Header):
이름 | 설명 | 타입 |
x-amz-copy-source-version-id | 만약 소스 오브젝트의 버져닝이 활성화가 되어 있었다면, 복사된 소스 오브젝트의 버젼응 나타냄. | String |
x-amz-server-side-encryption | 최초의 멀티파트 업로드 요청에서 server-side encryption 를 명시하였다면, 이 헤더가 응답에 포함된다. 이것은 HS2가 업로드 한 파트를 암호화하기위해 사용한 암호 알고리즘을 승인한다. | String |
요청 elements:
이름 | 설명 | 타입 |
CopyPartResult | 오든 응답 요소를 포함. | Container |
ETag | 새 파트의 ETag. | String |
LastModified | 마지막으로 수정한 파트의 날짜. | String |
응답 XML:
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <LastModified>Z</LastModified> <ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag> </CopyObjectResult>
특정 에러 코드:
에러코드 | 설명 | HTTP 상태코드 |
NoSuchUpload | 명시된 멀티파트 업로드가 존재 하지 않거나, 업로드된 아이디가 불분명하거나, 또는 삭제되었거나 완료된 멀티파트 오브젝트일 경우에 이 에러코드를 러턴한다. | 404 Not Found |
InvalidRequest | 명시된 소스 복사가 바이트 범위 소스 복사로써 제공되지 않는다. | 400 Bad Request |
멀티파트 업로드 시, 파트를 업로드 한다. 이 API를 요청하기 전에, 먼저 InitiateMultipartUpload API를 호출해서 UploadId 값을 얻어야 한다. 그 후에 되돌려받은 UploadId를 가지고 파트를 업로드한다. 파트를 업로드 할때마다 ETag를 되돌려 받는데, 이 값은 멀티파트 업로드를 끝낼 때 요청 XML에 사용된다. PartNumber는 1~10000사이의 어떤 값이라도 가능하다. PartNumber는 멀티파트 업로드 오브젝트 내에서 유일한 값이어야 하고, 순서를 나타낸다. 예를 들면, ParNumber가 400, 200, 600 순으로 업로드를 하고 CompleteMultipart를 한다면, 200, 400, 600 순서대로 MultipartUpload를 완료한다. 그리고, 새로운 파트를 업로드 할때, 이전 파트업로드에 사용했던 ParNumber라면 기존의 업로든된 파트를 재작성한다. 각각의 파트는 적어도 5MB 이상이어야 하지만, 마지막 파트는 사이즈의 제한이 없다.
METHOD/URL | PUT /objectName?uploadId=UploadId&partNumber=PartNumber HTTP/1.1 |
Header | Host: bucketName.hbox.a3c.co.kr |
Date: 날짜 | |
Authorization: 인증값 |
요청 헤더(Header):
이름 | 설명 | 타입 | 필요여부 |
Content-Length | 업로드하는 파트의 크기. | Integer | Yes |
Content-MD5 | 데이터의 base64 인코딩된 128비트 MD5 값. 이 헤더는 요청 본문이 전송중에 손상되지 않았음을 확인 하는 확인 메시지로 사용됩니다. | String | No |
Expect | 100-Continue. | Integer | No |
응답 헤더(Header):
이름 | 설명 | 타입 |
x-amz-server-side-encryption | 최초의 멀티파트 업로드 요청에서 server-side encryption 를 명시하였다면, 이 헤더가 응답에 포함된다. 이것은 HS2가 업로드 한 파트를 암호화하기위해 사용한 암호 알고리즘을 승인한다. | String |
HTTP/1.1 200 UNKNOWN STATUS CODE Content-Length: 0 ETag: "bc00541d80512bc0179f9f048674fc02" Content-Type: text/html; charset=utf-8 x-amz-request-id: 4fe93ea20cd20b18e4000160 Date: Tue, 26 Jun 2012 04:46:28 GMT Server: WEbSimpleStorage
특정 에러 코드:
에러코드 | 설명 | HTTP 상태코드 |
NoSuchUpload | 명시된 멀티파트 업로드가 존재 하지 않거나, 업로드된 아이디가 불분명하거나, 또는 삭제되었거나 완료된 멀티파트 오브젝트일 경우에 이 에러코드를 러턴한다. | 404 Not Found |
** 주의 사항:
WSS API에서 사용자 인증을 아래와 같이 할 수 있다. TBD
오류코드:
- AccessDenied:
- HTTP 403 Access Denied
- AccessDenied:
- HTTP 400 Anonymous users cannot copy objects. Please authenticate.
- BadDigest:
- HTTP 400
- BucketAlreadyExist:
- HTTP 409 The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.
- BucketNotEmpty:
- HTTP 409 The bucket you tried to delete is not empty.
- NoSuchWebsiteConfiguration:
- HTTP 404 The specified bucket does not have a website configuration
- InvalidAccessKeyId:
- HTTP 403 The Access Key Id you provided does not exist in our records.
- InvalidArgument:
- HTTP 400
- InvalidBucketName:
- HTTP 400
- InvalidBucketState:
- HTTP 409 The request is not valid with the current state of the bucket.
- InvalidEncryptionAlgorithm:
- HTTP 400 The Encryption request you specified is not valid. Supported value: AES256.
- InvalidMultipartUploadError:
- HTTP 400
- InvalidPart:
- HTTP 400
- InvalidPartOrder:
- HTTP 400
- InvalidPayer:
- HTTP 403 All access to this object has been disabled.
- InvalidPolicyDocument:
- HTTP 400
- InvalidRange:
- HTTP 416
- InvalidRequest:
- HTTP 400
- InvalidTargetBucket:
- HTTP 406
- KeyNotFound:
- HTTP 404
- MalformedACL:
- HTTP 400
- MalformedPolicy:
- HTTP 400
- MalformedXML:
- HTTP 400 The XML you provided was not well-formed or did not validate against our published schema.
- MethodNotAllowed:
- HTTP 405 The specified method is not allowed against this resource.
- NoSuchKey:
- HTTP 404 The resource you requested does not exist
- NoSuchLifecycleConfiguration:
- HTTP 404
- NoSuchUpload:
- HTTP 404
- NotModified:
- HTTP 304
- NotSuchBucketPolicy:
- HTTP 404
- InvalidBucketState:
- HTTP 409 Lifecycle configuration is currently not supported on a versioned bucket.
- InvalidBucketState:
- HTTP 409 Versioning is currently not supported on a bucket with lifecycle configuration. Delete lifecycle configuration before setting versioning for a bucket.
- PreconditionFailed:
- HTTP 412
- PurgedAccount:
- HTTP 403 The Account's status you provided is purged.
- RequestTimeTooSkewed:
- HTTP 403
- SignatureDoesNotMatch:
- HTTP 403
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
8 |
HBox를 이용한 블로그 이미지 호스팅
![]() | 호스트웨이 | 2014.03.19 | 14426 |
7 | HBox Linux Filesystem | 호스트웨이 | 2014.02.22 | 9518 |
6 |
HBox Java Upload codes
![]() | 호스트웨이 | 2014.02.22 | 8781 |
5 |
HBox Wordpress Plugin Setup
![]() | 호스트웨이 | 2014.02.22 | 18190 |
4 |
HBox Desktop apps
![]() | 호스트웨이 | 2014.02.22 | 12679 |
» | HBox API Spec | 호스트웨이 | 2014.02.21 | 8564 |
2 |
HBox 웹 콘솔 메뉴얼
![]() | 호스트웨이 | 2014.02.21 | 9591 |
1 | HBox 베타 서비스 안내 | 호스트웨이 | 2014.02.21 | 9625 |