S3 was the one served surface with no coverage page. The gateway has no operation-name dispatch table for it, so there was nothing to compare against the model. Predastore now declares the operations each of its S3 routes answers, so the generator compares that inventory the same way it compares the other nine services. The page credits Predastore rather than Spinifex, and its intro separates what is routed from what conforms, pointing at the ceph/s3-tests report for the second.
title, seoTitle, description, category, sections, tags
| title | seoTitle | description | category | sections | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| S3 API Coverage | Amazon S3 API Coverage on Spinifex — Spinifex Docs | The Amazon S3 API operations Predastore serves on the platform's S3 endpoint, alongside the AWS-hosted features it does not offer and why each is absent. | Coverage |
|
|
S3 API Coverage
Overview
Predastore implements 19 operations in the S3 2006-03-01 API model.
Predastore serves this endpoint
S3 is the one surface the AWS gateway does not answer itself. Object storage runs on Predastore, which serves the S3 REST API directly over its own TLS endpoint, with Reed-Solomon erasure coding and AES-256-GCM at rest behind it.
S3 selects an operation by method, path, query parameter and header rather than by an action name, so several operations share one route. The table below is generated from the route table Predastore builds its router from: GET /{bucket} answers both ListObjects and ListObjectsV2, and PUT /{bucket}/{key} splits four ways on ?partNumber and x-amz-copy-source.
Routed is not the same as conforming
This page says an operation is routed to a handler. It does not say the handler's behaviour matches S3 in every case, and for several operations it does not: ETag is not the body MD5, Marker is ignored on a v1 listing, and x-amz-meta-* does not survive a round trip.
That behaviour is measured separately, against the ceph/s3-tests suite Ceph RGW, MinIO and Garage are all validated with, and the results are published in Predastore's S3 compatibility report. Read that before porting a client that depends on exact S3 semantics.
Operations
| Operation |
|---|
AbortMultipartUpload |
CompleteMultipartUpload |
CopyObject |
CreateBucket |
CreateMultipartUpload |
DeleteBucket |
DeleteObject |
DeleteObjects |
GetObject |
HeadBucket |
HeadObject |
ListBuckets |
ListMultipartUploads |
ListObjects |
ListObjectsV2 |
ListParts |
PutObject |
UploadPart |
UploadPartCopy |
Not applicable
These operations describe AWS-hosted features this platform does not offer.
| Operation | Reason |
|---|---|
CreateSession |
Sessions authenticate S3 Express One Zone directory buckets, a storage class this platform does not offer. |
DeleteBucketAnalyticsConfiguration |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
DeleteBucketIntelligentTieringConfiguration |
Intelligent tiering, archive storage classes and the restores they need are AWS-hosted lifecycle services; objects here are held in one class on local media. |
DeleteBucketInventoryConfiguration |
Inventory reports are an AWS-hosted scheduled export; a listing here is served live from the metadata store. |
DeleteBucketMetricsConfiguration |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
DeleteBucketReplication |
Replication copies objects to a bucket in another region, and a deployment is a single region with no peer. |
GetBucketAccelerateConfiguration |
Transfer acceleration routes uploads over AWS edge locations, which an on-premise deployment has none of. |
GetBucketAnalyticsConfiguration |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
GetBucketIntelligentTieringConfiguration |
Intelligent tiering, archive storage classes and the restores they need are AWS-hosted lifecycle services; objects here are held in one class on local media. |
GetBucketInventoryConfiguration |
Inventory reports are an AWS-hosted scheduled export; a listing here is served live from the metadata store. |
GetBucketMetricsConfiguration |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
GetBucketReplication |
Replication copies objects to a bucket in another region, and a deployment is a single region with no peer. |
GetBucketRequestPayment |
Requester Pays shifts transfer charges to the caller, which needs AWS billing behind it. |
ListBucketAnalyticsConfigurations |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
ListBucketIntelligentTieringConfigurations |
Intelligent tiering, archive storage classes and the restores they need are AWS-hosted lifecycle services; objects here are held in one class on local media. |
ListBucketInventoryConfigurations |
Inventory reports are an AWS-hosted scheduled export; a listing here is served live from the metadata store. |
ListBucketMetricsConfigurations |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
PutBucketAccelerateConfiguration |
Transfer acceleration routes uploads over AWS edge locations, which an on-premise deployment has none of. |
PutBucketAnalyticsConfiguration |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
PutBucketIntelligentTieringConfiguration |
Intelligent tiering, archive storage classes and the restores they need are AWS-hosted lifecycle services; objects here are held in one class on local media. |
PutBucketInventoryConfiguration |
Inventory reports are an AWS-hosted scheduled export; a listing here is served live from the metadata store. |
PutBucketMetricsConfiguration |
Storage class analytics and CloudWatch request metrics are AWS-hosted reporting services with no equivalent here. |
PutBucketReplication |
Replication copies objects to a bucket in another region, and a deployment is a single region with no peer. |
PutBucketRequestPayment |
Requester Pays shifts transfer charges to the caller, which needs AWS billing behind it. |
RestoreObject |
Intelligent tiering, archive storage classes and the restores they need are AWS-hosted lifecycle services; objects here are held in one class on local media. |
WriteGetObjectResponse |
S3 Object Lambda rewrites a response from a Lambda function, and Lambda is not offered. |