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.

  • ListObjectsV2 is exposed as ListObjectsAsync; its request marshaller always sends list-type=2. The legacy ListObjects API 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 private and public-read. Objects inherit the bucket ACL; GetObjectAcl returns it, and PutObjectAcl only accepts a matching ACL.
  • GetObjectTagging returns an empty compatibility tag set. Backblaze does not support storing S3 object tags.
  • Versioning is always enabled. PutBucketVersioning accepts 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=true rule 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; DeleteBucketTagging is therefore blank. Empty-tag-set removal is not implemented by SimpleS3's shared PUT marshaller.
  • GetObjectLockConfiguration reports whether object retention is enabled. It does not return an S3 default-retention rule. Configuring bucket object retention through PutObjectLockConfiguration is not documented in the XML API. Object retention get/put is supported; GOVERNANCE maps to unlocked retention and COMPLIANCE to 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, and billing); the corresponding S3 operations are blank. Their existence as GCS features does not establish S3 wire compatibility.
  • DeleteObjects uses the documented POST ?delete XML 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 RenameObject or other AWS operations.
  • CORS and GetObjectAttributes remain exposed despite exclusions in Wasabi's API reference: the repository has a Wasabi CORS enforcement test, and WasabiClient records 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 on WasabiClient.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)