undocumented-s3-apis
undocumented-s3-apis copied to clipboard
Undocumented Amazon S3 APIs and third-party extensions
Undocumented S3 APIs
Undocumented Amazon S3 APIs and third-party extensions. This documents features outside the official Amazon S3 REST APIs. Note that these are not consistently supported across implementations.
Amazon APIs
GET object by multipart number
Object metadata exposes the number of multipart upload parts via the
x-amz-mp-parts-count header. Subsequent GET object requests can retrieve
individual parts via the partNumber parameter. This allows retrieving
individual multipart upload parts, including the original ETag.
HEAD bucket exposes region
HEAD bucket exposes the region via x-amz-bucket-region even if the request
lacks authentication. This allows clients to interrogate a bucket so that they
can route subsequent requests to the correct endpoint.
Multipart Upload ETag
Single part upload ETag are the MD5 hash of the object content. Multipart upload ETag concatenate the MD5 of each part, MD5 this data, and append a hyphen and the number of parts.
Third-party APIs
GET bucket unordered
allow-unordered=true parameter overrides key sorting which allows higher
performance with large buckets. Cannot be used with delimiter.
HEAD bucket extended
Returns bucket statistics via x-rgw-bytes-used and x-rgw-object-count
headers.
PUT object append
Append to an existing object at a given offset via the append and position
parameters. Responses include x-oss-next-append-position and
x-rgw-next-append-position which indicate the next valid append offset.
PUT object conditional
If-Match and If-None-Match (Ceph) and x-goog-if-generation-match and
x-goog-if-metageneration-match (Google) headers allow atomic replacement of
objects.
Resumable uploads
Initiate a resumable upload with POST object with the x-goog-resumable
header. Use the response Location to issue a PUT object with given
Content-Length and Content-Range headers. Continuing issuing these requests to
build larger objects.
Small file archives
Allows interaction with ZIP file contents as if they were objects. HeadObject,
GetObject, and ListObjectsV2 support these operations when the header
x-minio-extract has a true value.