Sonic S3 API compatibility

Sonic supports the following S3 APIs:

Authentication

All requests towards Sonic's S3 endpoints need to be authenticated with secret and access keys. Note that for each CDN push zone that you create, a new bucket with separate keys will be created. 

Object operations

PutObject
GetObject
HeadObject
CopyObject
DeleteObject
ListObjectsV2
ListObjectsV1
DeleteMultipleObjects
PostPolicy


Object Tagging

GetObjectTagging
PutObjectTagging
DeleteObjectTagging


Multipart upload operations

NewMultipartUpload
CompleteMultipartUpload
AbortMultipartUpload
ListMultipartUploads
PutObjectPart
CopyObjectPart
ListObjectParts

Additionally supported features and feature differences

• Both Sonic S3 endpoints and PUSHR's CDN support byte range requests which are not supported by AWS. 

• In Sonic DeleteObject can also delete folders

• Same path for both file and folder is not supported by Sonic

Unsupported APIs

Bucket policies are not supported. Please see below.

Notes on object retrieval

Sonic introduces a limited free egress API policy for content management purposes. This means that you can download your own content directly from the S3 endpoint to avoid being billed for CDN egress traffic. However, GET requests made directly to the S3 endpoints will be limited in speed and number of allowed connections. To deliver your stored objects to the world you must serve them over the CDN hostname. 

Notes on bucket policies

Sonic does not support editing of bucket policies. There is one default mixed access policy that applies to each bucket. It has the following characteristics:

• Your secret and access keys will be required for each request made towards the S3 endpoint, including GET requests.

• On the other hand, all stored objects will be accessible as direct links via your CDN hostname without the need for any authorization.

This policy allows only an authorized user to manage, list, upload and delete objects, while allowing objects to be served globally to any number of users via the CDN hostname, as long as they have a direct link to the object.

Notes on API limits

Sonic currently does not enforce API limits, except for GET requests.