S3 API Compatibility

This page documents S3 APIs supported by MinIO AIStor. For reference documentation on any given API, see the corresponding documentation for Amazon S3.

Object APIs

Conditional headers

MinIO AIStor supports conditional operations using the following HTTP headers:

Header Supported operations
If-Match GetObject, HeadObject, PutObject, CopyObject, DeleteObject, CreateMultipartUpload
If-None-Match GetObject, HeadObject, PutObject, CopyObject, CreateMultipartUpload
If-Modified-Since GetObject, HeadObject
If-Unmodified-Since GetObject, HeadObject
x-amz-copy-source-if-match CopyObject, UploadPartCopy
x-amz-copy-source-if-none-match CopyObject, UploadPartCopy
x-amz-copy-source-if-modified-since CopyObject, UploadPartCopy
x-amz-copy-source-if-unmodified-since CopyObject, UploadPartCopy

DeleteObjects supports conditional deletes using the <ETag> element in the request body.

Object locking

Unsupported object APIs

  • GetObjectAcl
  • PutObjectAcl

Multipart uploads

Differences from S3 APIs for multipart uploads

  • ListMultipartUploads requires the exact object name as a prefix.

  • The AbortIncompleteMultipartUpload lifecycle action is not supported with PutBucketLifecycle.

Bucket APIs

Bucket replication

Bucket lifecycle

Bucket notifications

Bucket policies

Unsupported bucket API operations

  • GetBucketInventoryConfiguration
  • PutBucketInventoryConfiguration
  • DeleteBucketInventoryConfiguration
  • GetBucketMetricsConfiguration
  • PutBucketMetricsConfiguration
  • DeleteBucketMetricsConfiguration
  • PutBucketWebsite
  • GetBucketLogging
  • PutBucketLogging
  • PutBucketAccelerateConfiguration
  • DeleteBucketAccelerateConfiguration
  • PutBucketRequestPayment
  • DeleteBucketRequestPayment
  • PutBucketAcl
  • HeadBucketAcl
  • GetPublicAccessBlock
  • PutPublicAccessBlock
  • DeletePublicAccessBlock
  • GetBucketOwnershipControls
  • PutBucketOwnershipControls
  • DeleteBucketOwnershipControls
  • GetBucketIntelligentTieringConfiguration
  • PutBucketIntelligentTieringConfiguration
  • ListBucketIntelligentTieringConfigurations
  • DeleteBucketIntelligentTieringConfiguration
  • GetBucketAnalyticsConfiguration

MinIO AIStor alternatives for unsupported bucket API operations

  • For calls to BucketACL or ObjectACL operations, use Policies.
  • For calls to BucketWebsite operations, use caddy or nginx.
  • For calls to BucketAnalytics, BucketMetrics, or BucketLogging operations, use Bucket notifications.

S3 extensions

MinIO AIStor extends the S3 API with additional capabilities, including the S3 Fan-Out Extension, which writes multiple independently-readable objects from a single source data stream in one PostUpload request.

S3 Express mode

When MinIO AIStor runs in S3 Express mode, the supported S3 API surface differs from the default S3 API mode. S3 Express mode also adds the AppendObject behavior, which lets a client append data to an existing object by issuing a PutObject request with the x-amz-write-offset-bytes header. For the list of operations supported and disabled in S3 Express mode, see S3 Express mode.

MinIO-specific error codes

In addition to the standard S3 error codes, MinIO AIStor returns the following MinIO-specific error codes:

Code HTTP status Description
NotSupported 501 API operation not implemented.
NotImplemented 501 KMS not configured or feature unavailable.
XMinioHealNotImplemented 400 Healing not available in this mode.
XMinioLDAPNotEnabled 501 LDAP must be enabled for this operation.
InvalidToken 400 Object Lambda output token mismatch.
LambdaFunctionStatusError 400 Object Lambda function returned an invalid status.