Skip to main content
Buckets in Nebius AI Cloud and other S3-compatible storage services can be sources and destinations for a data transfer. Additionally, Azure Blob Storage containers are supported as sources. In every data transfer, either the source, the destination or both must be Nebius AI Cloud buckets.

Supported providers and transfer directions

The table below lists all supported transfer directions: If data is transferred from another S3-compatible storage service, verify the consistency of object metadata before starting the transfer. Object Storage relies on the source service to assign accurate timestamps of the last modification. If the service sets timestamps incorrectly — for example, to dates in the past during object creation — such objects may be skipped during synchronization, even if they are new or updated.

Versioned buckets as sources

You can transfer data from versioned buckets. For versioned buckets, only the current object version is transferred.

Access to buckets

When you create a data transfer, you provide credentials that Object Storage uses to access the buckets. These credentials belong to accounts in storage services, such as service accounts in Nebius AI Cloud. The accounts perform actions on buckets and objects during the data transfer, so these accounts must have sufficient permissions to perform these actions. For more information, see Access to buckets for data transfers.

Limitations for conditional requests from S3-compatible services

Some S3-compatible storage services don’t support the If-Match and If-None-Match HTTP headers for conditional requests. When you use such a provider as a transfer destination, guarantees for write and delete operations degrade to best-effort behavior:
  • Protection of concurrent write and delete operations isn’t enforced. The data transfer can’t atomically verify that an object wasn’t modified between the read and the write or delete operation. This creates a race condition where concurrent operations may silently overwrite changes or delete objects unexpectedly.
  • If overwriting and deleting unmanaged destination objects is disabled (.spec.touch_unmanaged = false), unmanaged objects may still be overwritten or deleted if another process writes to them between the read and write or delete operation.
  • The enabled overwriting destination objects if source is newer (.spec.overwrite_strategy = IF_NEWER) doesn’t guarantee that only older objects are overwritten. If an object is written after the read operation but before the write operation, it won’t be detected and may be overwritten.
  • The enabled deletion of destination objects that aren’t in the source (.spec.enable_deletes_in_destination = true) doesn’t guarantee that only stale destination objects are deleted. If an object is written to the destination after the destination read operation but before deletion, it may be deleted.
To run concurrent write or delete operations and follow strict data-consistency requirements, check your provider’s documentation and verify whether the If-Match and If-None-Match headers are supported. For example, Backblaze B2 and Alibaba Cloud Object Storage Service don’t support these headers.