Skip to main content
Object Storage is compatible with the Amazon S3 API, so you can use your existing S3 tools, SDKs and workflows without additional configuration. This reference outlines the boundaries of that compatibility. For bucket-level operations such as creating buckets or enabling versioning, S3-compatible tools generally work, but Nebius AI Cloud API, CLI and Terraform provider offer the most complete feature coverage.

Unsupported S3 features

The following S3 features are not currently supported in Object Storage:
  • Object ACLs: Per-object access control lists are not supported. Use bucket policies for access control.
  • SSE-KMS and SSE-S3 encryption: AWS-managed server-side encryption is not supported. All data stored in buckets is encrypted at both the service and infrastructure levels.
  • Object Lock and Legal Hold: Write-once-read-many (WORM) retention policies are not supported.
  • S3 Select: Query-in-place functionality is not supported. AWS has also discontinued S3 Select.
  • Static website hosting: Serving bucket contents as a static website is not supported.
  • Bucket inventory: Scheduled inventory reports are not supported.
  • Replication: Cross-region and cross-bucket replication rules are not supported. Use data transfers to replicate data between buckets.
  • Event notifications: S3 Event Notifications are not supported.
  • Object Ownership: S3 Object Ownership is not supported.

Behavioral differences

Object Storage behaves differently from S3 in the following cases:
  • ETag format: In some cases, Object Storage computes ETag values with a non-MD5 algorithm. The ETag still changes whenever the object’s content changes, but it is not always the MD5 hash of that content, so don’t rely on it for integrity checks. To verify object integrity, use the checksum headers (X-Amz-Checksum-*) instead. MD5-based ETags can be enabled per bucket for simple objects and multipart upload parts on request — contact support to discuss your use case.
  • Conditional writes: On PutObject requests that include If-None-Match: "*", Object Storage checks whether the object exists before reading the request body, whereas S3 reads the full body first and checks the condition afterward. This reduces unnecessary data transfer when the condition fails, but a client that doesn’t support the Expect: 100-continue header might see unexpected errors.
  • Object versioning: Only the current version of an object can have a null version ID. Once an object version becomes non-current, it’s assigned a specific version identifier.
  • ListObjectVersions: In ListObjectVersions responses, the NextKeyMarker and NextVersionIdMarker fields are opaque tokens that are only valid when passed back exactly as received from the previous ListObjectVersions response.
  • ListMultipartUploads: ListMultipartUploads doesn’t support the delimiter parameter, and common prefixes are not returned in responses.
  • Lifecycle configuration: The deprecated XML format is not supported. Use the current format described in AWS documentation.

Supported S3 API methods

Object Storage supports the following S3 API methods. Partial means the method works with the limitation noted.
MethodSupportNotes
GetObjectYes
HeadObjectYes
PutObjectYes
CopyObjectYes
DeleteObjectYes
DeleteObjectsYes
GetObjectACLNo
ListObjectsV2Yes
ListObjectsPartialSupported for backward compatibility; ListObjectsV2 is recommended.
ListObjectVersionsYes
PostObjectPartialSupported for basic use cases. Contact support if your workload depends on this method.
GetObjectTaggingYes
PutObjectTaggingYes
DeleteObjectTaggingYes
CreateMultipartUploadYes
UploadPartYes
UploadPartCopyYes
CompleteMultipartUploadYes
AbortMultipartUploadYes
ListMultipartUploadsYes
CreateBucketYes
HeadBucketYes
GetBucketLocationYes
GetBucketVersioningYes
PutBucketVersioningYes
GetBucketLifecycleConfigurationYesOnly S3-compatible lifecycle rules are supported.
PutBucketLifecycleConfigurationYes
PutBucketCORSYes

Supported S3 headers

Object Storage supports the following S3-compatible HTTP headers:
  • X-Amz-Copy-Source
  • X-Amz-Copy-Source-If-Match
  • X-Amz-Copy-Source-Range
  • X-Amz-Date
  • X-Amz-Delete-Marker
  • X-Amz-Expiration
  • X-Amz-Metadata-Directive
  • X-Amz-Mp-Parts-Count
  • X-Amz-Request-Id
  • X-Amz-Storage-Class
  • X-Amz-Version-Id
  • X-Amz-Bucket-Region
  • X-Amz-Meta-*
  • If-Match: Supported in GetObject, PutObject, DeleteObject
  • If-None-Match: Supported in GetObject, PutObject
  • If-Modified-Since, If-Unmodified-Since: Supported in GetObject
  • Access-Control-*
  • X-Amz-Checksum-*

See also