Mapping From S3 API to Riak CS internal API
Overview
This document is to outline a mapping of S3 API URLs to their rewritten format that is processed by Webmachine.
URL Mapping
Service Operations
GET ServiceGET /->GET /buckets
Bucket Operations
Note Common method to specify bucket is to prefix bucket name to Host header value
GET BucketGET /orGET /<bucket>->GET /buckets/<bucket>/objects
HEAD BucketHEAD /orHEAD /<bucket>->HEAD /buckets/<bucket>
PUT BucketPUT /orPUT /<bucket>->PUT /buckets/<bucket>
DELETE BucketDELETE /orDELETE /<bucket>->DELETE /buckets/<bucket>
GET Bucket aclGET /?acl->GET /buckets/<bucket>/acl
PUT Bucket aclPUT /?acl->PUT /buckets/<bucket>/acl
GET Bucket locationGET /?location->GET /buckets/<bucket>/location
PUT Bucket locationPUT /?location->PUT /buckets/<bucket>/location
GET Bucket versioningGET /?versioning->GET /buckets/<bucket>/versioning
PUT Bucket versioningPUT /?versioning->PUT /buckets/<bucket>/versioning
GET Bucket policyGET /?policy->GET /buckets/<bucket>/policy
PUT Bucket policyPUT /?policy->PUT /buckets/<bucket>/policy
DELETE Bucket policyDELETE /?policy->DELETE /buckets/<bucket>/policy
List Multipart UploadsGET /?uploads->GET /buckets/<bucket>/uploads
Delete Multiple Objects(This is listed in the S3 docs as an object operation, but it fits better here)POST /?delete->POST /buckets/<bucket>/delete
Object Operations
Note Common method to specify bucket is to prefix bucket name to Host header value
GET ObjectGET /<object>->GET /buckets/<bucket>/objects/<object>
HEAD ObjectHEAD /<object>->HEAD /buckets/<bucket>/objects/<object>
PUT ObjectPUT /<object>->PUT /buckets/<bucket>/objects/<object>
DELETE ObjectDELETE /<object>->DELETE /buckets/<bucket>/objects/<object>
GET Object aclGET /<object>?acl->GET /buckets/<bucket>/objects/<object>/acl
PUT Object aclPUT /<object>->PUT /buckets/<bucket>/objects/<object>/acl
Initiate Multipart UploadPOST /<object>?uploads->POST /buckets/<bucket>/objects/<object>/uploads
Upload PartPUT /<object>?partNumber=<part_num>&uploadId=<upload_id>->PUT /buckets/<bucket>/objects/<object>/uploads/<upload_id>?partNumber=<part_num>
Complete Multipart UploadPOST /<object>?uploads->POST /buckets/<bucket>/objects/<object>/uploads
Upload PartDELETE /<object>&uploadId=<upload_id>->DELETE /buckets/<bucket>/objects/<object>/uploads/<upload_id>
List PartsGET /<object>?uploadId=<upload_id>->GET /buckets/<bucket>/objects/<object>/uploads/<upload_id>
