Provider status - Genbox/SimpleS3 GitHub Wiki
This page describes provider support and the operations exposed by SimpleS3's concrete provider clients. Last reviewed on 2026-09-27.
- x: the provider supports the operation and SimpleS3 exposes an implementation.
- dash (-): the provider supports the operation, but SimpleS3 does not yet expose a compatible implementation.
- empty: provider support for this S3 operation is unavailable or is not documented.
- numbered notes explain provider-specific limitations and AWS API status, with links to the source documentation.
An x describes operation-level support, not support for every AWS option or a live-service test of every operation.
Numbered notes beside x or - describe limitations or API status for that provider, including AWS's deprecation,
replacement, or availability guidance.
| Type | Operation | Amazon S3 | Backblaze B2 | Google GCS | Wasabi |
|---|---|---|---|---|---|
| Bucket | CreateBucket | x | x | x | x |
| Bucket | CreateBucketMetadataConfiguration | x | |||
| Bucket | CreateBucketMetadataTableConfiguration | -[^4] | |||
| Bucket | CreateSession | - | |||
| Bucket | DeleteBucket | x | x | x | x |
| Bucket | DeleteBucketAnalyticsConfiguration | x | |||
| Bucket | DeleteBucketCors | x | x | x | |
| Bucket | DeleteBucketEncryption | x | x | ||
| Bucket | DeleteBucketIntelligentTieringConfiguration | x | |||
| Bucket | DeleteBucketInventoryConfiguration | x | x | ||
| Bucket | DeleteBucketLifecycle | x | x | x | |
| Bucket | DeleteBucketMetadataConfiguration | x | |||
| Bucket | DeleteBucketMetadataTableConfiguration | -[^4] | |||
| Bucket | DeleteBucketMetricsConfiguration | x | |||
| Bucket | DeleteBucketOwnershipControls | x | |||
| Bucket | DeleteBucketPolicy | x | x | ||
| Bucket | DeleteBucketReplication | x | x | ||
| Bucket | DeleteBucketTagging | x | x | ||
| Bucket | DeleteBucketWebsite | x | |||
| Bucket | DeletePublicAccessBlock | x | |||
| Bucket | GetBucketAbac | x | |||
| Bucket | GetBucketAccelerateConfiguration | x | |||
| Bucket | GetBucketAcl | x | x | x | x |
| Bucket | GetBucketAnalyticsConfiguration | x | |||
| Bucket | GetBucketCors | x | x | -[^1] | x |
| Bucket | GetBucketEncryption | x | x | ||
| Bucket | GetBucketIntelligentTieringConfiguration | x | |||
| Bucket | GetBucketInventoryConfiguration | x | x | ||
| Bucket | GetBucketLifecycle | -[^2] | - | ||
| Bucket | GetBucketLifecycleConfiguration | x | x | -[^1] | x |
| Bucket | GetBucketLocation | x[^6] | x | x | x |
| Bucket | GetBucketLogging | x | x | -[^1] | x |
| Bucket | GetBucketMetadataConfiguration | x | |||
| Bucket | GetBucketMetadataTableConfiguration | -[^4] | |||
| Bucket | GetBucketMetricsConfiguration | x | |||
| Bucket | GetBucketNotification | -[^3] | - | ||
| Bucket | GetBucketNotificationConfiguration | - | - | ||
| Bucket | GetBucketOwnershipControls | x | |||
| Bucket | GetBucketPolicy | x | x | ||
| Bucket | GetBucketPolicyStatus | x | |||
| Bucket | GetBucketReplication | - | - | ||
| Bucket | GetBucketRequestPayment | x | |||
| Bucket | GetBucketTagging | x | x | x | |
| Bucket | GetBucketVersioning | x | x | x | x |
| Bucket | GetBucketWebsite | x | |||
| Bucket | GetObjectLockConfiguration | x | x | x | x |
| Bucket | GetPublicAccessBlock | x | |||
| Bucket | HeadBucket | x | x | x | x |
| Bucket | ListBucketAnalyticsConfigurations | x | |||
| Bucket | ListBucketIntelligentTieringConfigurations | x | |||
| Bucket | ListBucketInventoryConfigurations | x | x | ||
| Bucket | ListBucketMetricsConfigurations | x | |||
| Bucket | ListBuckets | x | x | x | x |
| Bucket | ListDirectoryBuckets | - | |||
| Bucket | PutBucketAbac | x | |||
| Bucket | PutBucketAccelerateConfiguration | x | |||
| Bucket | PutBucketAcl | x | x | x | x |
| Bucket | PutBucketAnalyticsConfiguration | x | |||
| Bucket | PutBucketCors | x | x | -[^1] | x |
| Bucket | PutBucketEncryption | x | x | ||
| Bucket | PutBucketIntelligentTieringConfiguration | x | |||
| Bucket | PutBucketInventoryConfiguration | x | x | ||
| Bucket | PutBucketLifecycle | -[^2] | - | ||
| Bucket | PutBucketLifecycleConfiguration | x | x | -[^1] | x |
| Bucket | PutBucketLogging | x | x | -[^1] | x |
| Bucket | PutBucketMetricsConfiguration | x | |||
| Bucket | PutBucketNotification | -[^3] | - | ||
| Bucket | PutBucketNotificationConfiguration | - | - | ||
| Bucket | PutBucketOwnershipControls | x | |||
| Bucket | PutBucketPolicy | x | x | ||
| Bucket | PutBucketReplication | - | - | ||
| Bucket | PutBucketRequestPayment | x | |||
| Bucket | PutBucketTagging | x | x | x | |
| Bucket | PutBucketVersioning | x | x | x | x |
| Bucket | PutBucketWebsite | x | |||
| Bucket | PutObjectLockConfiguration | x | x | x | |
| Bucket | PutPublicAccessBlock | x | |||
| Bucket | UpdateBucketMetadataAnnotationTableConfiguration | x | |||
| Bucket | UpdateBucketMetadataInventoryTableConfiguration | x | |||
| Bucket | UpdateBucketMetadataJournalTableConfiguration | x | |||
| Object | AbortMultipartUpload | x | x | x | x |
| Object | CompleteMultipartUpload | x | x | x | x |
| Object | CopyObject | x | x | x | x |
| Object | CreateMultipartUpload | x | x | x | x |
| Object | DeleteObject | x | x | x | x |
| Object | DeleteObjectAnnotation | x | |||
| Object | DeleteObjects | x | x | x | x |
| Object | DeleteObjectTagging | x | x | ||
| Object | GetObject | x | x | x | x |
| Object | GetObjectAcl | x | x | x | x |
| Object | GetObjectAnnotation | x | |||
| Object | GetObjectAttributes | x | x | ||
| Object | GetObjectLegalHold | x | x | x | |
| Object | GetObjectRetention | x | x | x | x |
| Object | GetObjectTagging | x | x | x | |
| Object | GetObjectTorrent | - | |||
| Object | HeadObject | x | x | x | x |
| Object | ListMultipartUploads | x | x | x | x |
| Object | ListObjectAnnotations | x | |||
| Object | ListObjects | -[^5] | - | - | - |
| Object | ListObjectsV2 | x | x | x | x |
| Object | ListObjectVersions | x | x | x | x |
| Object | ListParts | x | x | x | x |
| Object | PutObject | x | x | x | x |
| Object | PutObjectAcl | x | x | x | x |
| Object | PutObjectAnnotation | x | |||
| Object | PutObjectLegalHold | x | x | x | |
| Object | PutObjectRetention | x | x | x | x |
| Object | PutObjectTagging | x | x | ||
| Object | RenameObject | - | |||
| Object | RestoreObject | x | |||
| Object | SelectObjectContent | -[^7] | |||
| Object | UpdateObjectEncryption | x | |||
| Object | UploadPart | x | x | x | x |
| Object | UploadPartCopy | x | x | x | |
| Object | WriteGetObjectResponse | -[^8] |
[^1]: Google Cloud Storage supports these APIs, but its documented request/response XML format differs from Amazon S3's. SimpleS3's AWS marshallers are not compatible with that format, so these operations are not implemented for GCS.
[^2]: Deprecated lifecycle APIs.
AWS's PutBucketLifecycle documentation
states "This version has been deprecated" and explicitly labels the related GetBucketLifecycle operation "Deprecated".
The GetBucketLifecycle documentation
says it is provided for backward compatibility. Use GetBucketLifecycleConfiguration and
PutBucketLifecycleConfiguration.
[^3]: Deprecated notification APIs. AWS describes both
GetBucketNotification and
PutBucketNotification as "No longer
used".
Use GetBucketNotificationConfiguration and PutBucketNotificationConfiguration.
[^4]: Superseded V1 metadata APIs. AWS says "We no longer recommend using" the V1 operations:
CreateBucketMetadataTableConfiguration,
GetBucketMetadataTableConfiguration,
and
DeleteBucketMetadataTableConfiguration.
Use CreateBucketMetadataConfiguration, GetBucketMetadataConfiguration, and DeleteBucketMetadataConfiguration.
The V2 get/delete operations work with both V1 and V2 configurations; the V1 get/delete operations cannot handle V2
configurations.
[^5]: Superseded object listing API.
The ListObjects documentation
says "This action has been revised" and recommends ListObjectsV2 for application development. AWS continues to support
ListObjects for backward compatibility; the page does not declare it deprecated.
[^6]: Discouraged region-discovery API.
The GetBucketLocation documentation
says using it "is no longer a best practice" and recommends HeadBucket instead. AWS continues to support it for
backward compatibility; the page does not declare it deprecated.
For AWS bucket region discovery, prefer HeadBucketAsync and read HeadBucketResponse.BucketRegion.
[^7]: S3 Select availability restriction.
AWS's S3 Select documentation
states that S3 Select is no longer available to new customers. Existing customers can continue using it. This is an
availability restriction rather than a declaration that the SelectObjectContent API is deprecated.
[^8]: S3 Object Lambda availability restriction.
AWS's S3 Object Lambda documentation
states that, as of November 7, 2025, the service is available only to existing customers currently using it and select
AWS Partner Network partners. WriteGetObjectResponse is part of that service. This is an availability restriction
rather than a declaration that the API is deprecated.
API coverage and naming
The table lists all 116 operations in the Amazon S3 API operations index, including superseded APIs and APIs closed to new customers. It covers the Amazon S3 service API. Separate service APIs, such as Amazon S3 Control, S3 on Outposts, S3 Tables, and S3 Vectors, are outside its scope.
ListObjectsV2is exposed asListObjectsAsync; its request marshaller always sendslist-type=2. The legacyListObjectsAPI is not implemented.- The legacy lifecycle and notification methods and the older metadata-table methods are listed separately from their replacements. An implementation of a replacement is not counted as an implementation of the legacy API.
Provider notes
Backblaze B2
- Bucket ACLs are limited to
privateandpublic-read. Objects inherit the bucket ACL;GetObjectAclreturns it, andPutObjectAclonly accepts a matching ACL. GetObjectTaggingreturns an empty compatibility tag set. Backblaze does not support storing S3 object tags.- Versioning is always enabled.
PutBucketVersioningaccepts enabling it but rejects suspension. - Lifecycle get/put/delete are supported. Rules must be enabled and use prefix filters. Day-based expiration requires a
paired
ExpiredObjectDeleteMarker=truerule with the same prefix. Storage-class transitions, date-based expiration, disabled rules, and non-prefix filters are unsupported. See the lifecycle source below for all restrictions. - Native B2 features, such as replication and event-notification configuration, are not counted as S3 operations without a documented S3 endpoint.
Google Cloud Storage
- The matrix covers the XML interoperability API. JSON-only features and unrelated XML operations are not counted as S3 operations.
- Bucket tagging get/put uses GCS labels, including GCS label restrictions. GCS deletes labels using a PUT with an
empty tag set, not S3's
DELETE ?tagging;DeleteBucketTaggingis therefore blank. Empty-tag-set removal is not implemented by SimpleS3's shared PUT marshaller. GetObjectLockConfigurationreports whether object retention is enabled. It does not return an S3 default-retention rule. Configuring bucket object retention throughPutObjectLockConfigurationis not documented in the XML API. Object retention get/put is supported;GOVERNANCEmaps to unlocked retention andCOMPLIANCEto locked retention.- Removing CORS, lifecycle, and logging configurations uses PUT with an empty configuration, rather than the corresponding AWS DELETE operation.
- Website, default encryption, and Requester Pays configuration use different GCS query parameters (
websiteConfig,encryptionConfig, andbilling); the corresponding S3 operations are blank. Their existence as GCS features does not establish S3 wire compatibility. DeleteObjectsuses the documentedPOST ?deleteXML API. Versioning and soft-delete settings determine whether deletion makes an object noncurrent, soft-deleted, or permanently deleted.- GCS multipart uploads support uploading part data, but do not document S3
UploadPartCopy.
Wasabi
- Support follows Wasabi's S3 compatibility reference and its explicit exclusions. Wasabi-specific MOVE, compose, and
append endpoints do not count as AWS
RenameObjector other AWS operations. - CORS and
GetObjectAttributesremain exposed despite exclusions in Wasabi's API reference: the repository has a Wasabi CORS enforcement test, andWasabiClientrecords prior verification of object attributes. CORS rule IDs are not preserved; deleting custom CORS rules restores Wasabi's permissive defaults. Attribute part-pagination markers require the workaround documented onWasabiClient.GetObjectAttributesAsync. - Replication get/put/delete endpoints are documented. SimpleS3 exposes delete; get and put remain unimplemented.
- Wasabi has one storage class, and its bucket encryption configuration, restore, S3 Select, directory buckets, and other explicitly excluded APIs are not marked as supported.
Sources (last accessed on 2026-09-27)
- Amazon S3 API operations
- Backblaze B2 S3-Compatible API docs and API documentation index
- Backblaze lifecycle configuration: GET, PUT, DELETE
- Google Cloud Storage XML API request methods
- Google bucket metadata: GET, PUT; multi-object delete; object listing
- Google object retention: GET, PUT
- Wasabi S3 API Reference, bucket operations and exclusions, and object operations and exclusions
- Wasabi replication API and event notifications