Upload an object
You can upload objects into a bucket in two ways:
- Simple upload is available via the Control Panel, API and tools for working with S3. We do not recommend using it for uploading objects larger than 1 GB;
- segmented upload is available via Swift API, S3 API and some S3 tools. It is recommended for files larger than 1 GB.
You can upload any number of objects to a bucket, unless bucket limits are set.
When uploading objects via S3 API, you can use conditional requests.
If Object Lock is used in the bucket and default object locking is enabled, a governance mode lock will be applied to the uploaded objects.
Simple upload
We do not recommend using Cyrillic characters in object names.
- In the control panel, in the top menu, click Products and select S3.
- Go to the Buckets section.
- Open the bucket page → Objects tab.
- Click Upload files
- Select the objects to upload.
Segmented upload
Segmented upload is the uploading of objects in parts (segments), which is recommended for files larger than 1 GB.
Segmented upload is possible via Swift API (SLO/DLO technology), S3 API (Multipart Upload technology), and some tools for working with S3. The segmented upload process depends on the API and tool used. Some tools (Rclone, Cyberduck) support segmented upload and automatically enable it for objects larger than a certain size. In other cases, you must initialize it manually.
With segmented upload, you can:
- upload large objects in smaller segments;
- increase upload speed using parallel requests;
- in case of connection failures, do not reload the object, but repeat uploading only the necessary segments.
If a segmented upload completes incorrectly, the segments that managed to upload (incomplete multipart uploads) will be queued for deletion in six months. Due to the specifics of deleting segmented objects, such segments may not be deleted. Selectel does not guarantee the deletion time or that segments of an incomplete segmented upload will definitely be deleted. Controlling and deleting segments is the responsibility of Selectel clients.
How it works
When performing a segmented upload of an object to a primary bucket (<bucket_name>), a service bucket is created where object segments will be stored:
- when uploading objects via S3 API, the bucket is created automatically and is called
<bucket_name>_s3multipartuploads; - when uploading objects via Swift API, the bucket is created using an API utility or SDK and is called
<bucket_name>_segmentsor<bucket_name>.file-segments.
Instead of the object, a manifest—a file describing the segments and their paths—is uploaded to the primary bucket (<bucket_name>). When downloading the manifest file, the segments are automatically reassembled into the object.
By default, service buckets are not displayed in the Control panel in the list of S3 buckets — you can enable the display of service buckets in the settings.
Features
When uploading objects via API, take into account:
- S3 limitations;
- specifics of deleting segmented objects;
- recommendations not to use Cyrillic characters in object names.
If you use Object Lock and enable, modify, or delete an object lock or default retention in a bucket, all object segments inherit the object lock settings. If an object is locked, its segments cannot be deleted while the lock is active. However, object segments will not display lock information — you can check for a lock only on the object itself.
Re-uploading an object
If the name of the uploaded object matches the name of an object already in the bucket, the behavior depends on whether versioning is enabled in the bucket:
-
if versioning is enabled:
- the new object will become the current version of the object and will be assigned a version ID;
- the previous object version will not be overwritten by the new one, but will be moved to the object version list with the same name; ;
-
if versioning is suspended or disabled, the new object will overwrite the previous one.
Upload speed
Upload speed for objects to buckets is affected by:
- channel bandwidth;
- connection mode;
- upload manager software used;
- distance between the storage servers and you;
- host load.
Billing
Regardless of the upload method, the billed items are storage volume, number of API requests, and outgoing traffic.
- with standard uploading, the storage volume of the entire object is billed; ;
- with segmented upload the object is stored in segments, so only the segments are actually billed. The manifest file takes up a minimal amount of space (a few KB), so the cost of storing an object with segments is almost identical to the cost of storing a whole object.