Skip to main content

Upload an object

Last update:

You can upload objects into a bucket in two ways:

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.

  1. In the control panel, in the top menu, click Products and select S3.
  2. Go to the Buckets section.
  3. Open the bucket page → Objects tab.
  4. Click Upload files
  5. 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>_segments or <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:

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.