S3 APIs
Intro
The Cubbit S3 Gateway supports most of the AWS S3 RESTful APIs used by the AWS SDKs (like aws-sdk-js, aws-sdk-go, etc), by the official AWS Command Line Interface and by all the S3 compatible clients.
This implies that the aforementioned tools can be used with Cubbit simply by configuring them to use the right endpoint, i.e. https://s3.cubbit.eu. For example, in this documentation, you can find instructions on how to setup the AWS CLI.
The following sections describe broadly what features are currently supported and how closely they reflect the original AWS S3 specification. The final section gives a detailed view of what API methods are supported.
Bucket management
Creating and deleting new buckets is supported, along with listing their content.
Object management
Uploading, downloading, copying, and deleting objects are fully supported operations.
Multipart Upload
Multipart Uploads are fully supported. More information about the multipart upload can be found here.
Versioning
Versioning can be activated on a bucket and can be suspended. All operations related to versioned objects, like creating new versions, listing, or deleting them are supported. More information on bucket versioning can be found here.
Object Lock
The Object Lock feature is fully supported. The following table summarizes the various lock methods.
Lock type | Mode | Support |
---|---|---|
Legal Hold | - | Yes |
Object Retention | COMPLIANCE | Yes |
Object Retention | GOVERNANCE | Yes |
ACL
ACL APIs are supported.
The grantee may be one of the following:
- a user (by their ID or their email)
- a predefined group
The supported predefined groups are:
- AllUsers
- AuthenticatedUsers
It should also be noted that:
- read and write operations are not yet supported in a public-read or public-read-write scenario
- the implementation of these groups might slightly change in the future
The following canned ACLs are allowed:
- private
- public-read (with the aforementioned limitations)
- public-read-write (with the aforementioned limitations)
- authenticated-read
- bucket-owner-read
- bucket-owner-full-control
More information can be found here.
Lifecycle Configuration
The Lifecycle Configuration feature is partially supported.
A single configuration rule is allowed. The only configuration rule supported is the NoncurrentVersionExpiration with no filters.
More information can be found here.
Bucket Policy
Not supported.
Object Tagging
We support the core Object Tagging APIs for managing tags on individual S3 objects:
PutObjectTagging
: Assign or replace the complete tags set on an existing object.GetObjectTagging
: Retrieve all tags associated with a specified object.DeleteObjectTagging
: Remove all tags from a specified object.
We also preserve tags when copying objects using the CopyObject
API.
Unsupported Tagging Features
Specific tagging capabilities in ancillary APIs are not yet supported:
- ⚠️ Tagging at Upload Time: You cannot add tags inline during
PutObject
orCreateMultipartUpload
requests. - ⚠️ Tag Count in Retrieval: The
GetObject
response does not include thex-amz-tagging-count header
. - ⚠️ Tag Overwrite on Copy: You cannot override or replace tags via
CopyObject
. Only tag preservation is supported.
Some legacy buckets created before object tagging was available may not support tagging operations at all. If you happen to encounter errors, please make sure that the target bucket has tagging enabled.
Bucket Tagging
Not supported.
Object Lifecycle
Not supported.
API Compatibility Table
Method | Support | Notes |
---|---|---|
AbortMultipartUpload | Yes | |
CompleteMultipartUpload | Yes | |
CopyObject | Yes | |
CreateBucket | Yes | |
CreateMultipartUpload | Yes | |
DeleteBucket | Yes | |
DeleteBucketAnalyticsConfiguration | No | |
DeleteBucketCors | No | |
DeleteBucketEncryption | No | |
DeleteBucketIntelligentTieringConfiguration | No | |
DeleteBucketInventoryConfiguration | No | |
DeleteBucketLifecycle | Yes | |
DeleteBucketMetricsConfiguration | No | |
DeleteBucketOwnershipControls | Yes | |
DeleteBucketPolicy | No | |
DeleteBucketReplication | No | |
DeleteBucketTagging | No | |
DeleteBucketWebsite | No | |
DeleteObject | Yes | |
DeleteObjects | Yes | |
DeleteObjectTagging | Yes | May not be available for some buckets |
DeletePublicAccessBlock | No | |
GetBucketAccelerateConfiguration | No | |
GetBucketAcl | Yes | |
GetBucketAnalyticsConfiguration | No | |
GetBucketCors | No | |
GetBucketEncryption | No | |
GetBucketIntelligentTieringConfiguration | No | |
GetBucketInventoryConfiguration | No | |
GetBucketLifecycle | No | |
GetBucketLifecycleConfiguration | Yes | NoncurrentVersionExpiration only |
GetBucketLocation | Yes | |
GetBucketLogging | No | |
GetBucketMetricsConfiguration | No | |
GetBucketNotification | No | |
GetBucketNotificationConfiguration | No | |
GetBucketOwnershipControls | Yes | |
GetBucketPolicy | No | |
GetBucketPolicyStatus | No | |
GetBucketReplication | No | |
GetBucketRequestPayment | No | |
GetBucketTagging | No | |
GetBucketVersioning | Yes | |
GetBucketWebsite | No | |
GetObject | Yes | |
GetObjectAcl | Yes | |
GetObjectAttributes | No | |
GetObjectLegalHold | Yes | |
GetObjectLockConfiguration | Yes | |
GetObjectRetention | Yes | |
GetObjectTagging | Yes | May not be available for some buckets |
GetObjectTorrent | No | |
GetPublicAccessBlock | No | |
HeadBucket | Yes | |
HeadObject | Yes | |
ListBucketAnalyticsConfigurations | No | |
ListBucketIntelligentTieringConfigurations | No | |
ListBucketInventoryConfigurations | No | |
ListBucketMetricsConfigurations | No | |
ListBuckets | Yes | |
ListMultipartUploads | Yes | |
ListObjects | Yes | |
ListObjectsV2 | Yes | |
ListObjectVersions | Yes | |
ListParts | Yes | |
PutBucketAccelerateConfiguration | No | |
PutBucketAcl | Yes | |
PutBucketAnalyticsConfiguration | No | |
PutBucketCors | No | |
PutBucketEncryption | No | |
PutBucketIntelligentTieringConfiguration | No | |
PutBucketInventoryConfiguration | No | |
PutBucketLifecycle | No | |
PutBucketLifecycleConfiguration | Yes | NoncurrentVersionExpiration only |
PutBucketLogging | No | |
PutBucketMetricsConfiguration | No | |
PutBucketNotification | No | |
PutBucketNotificationConfiguration | No | |
PutBucketOwnershipControls | Yes | |
PutBucketPolicy | No | |
PutBucketReplication | No | |
PutBucketRequestPayment | No | |
PutBucketTagging | No | |
PutBucketVersioning | Yes | |
PutBucketWebsite | No | |
PutObject | Yes | |
PutObjectAcl | Yes | |
PutObjectLegalHold | Yes | |
PutObjectLockConfiguration | Yes | |
PutObjectRetention | Yes | |
PutObjectTagging | Yes | May not be available for some buckets |
PutPublicAccessBlock | No | |
RestoreObject | No | |
SelectObjectContent | No | |
UploadPart | Yes | |
UploadPartCopy | Yes | |
WriteGetObjectResponse | No |