Мультикомпонентная (multipart) загрузка используется для загрузки в бакет Object Storage больших файлов по частям.
Создавать мультикомпонентные загрузки могут пользователи с ролями s3e.admin и s3e.editor. Подробнее о ролях — в руководстве Управление ролями в Object Storage.
При загрузке объекта через личный кабинет мультикомпонентная загрузка начинается автоматически для файлов больше 20 МБ. Личный кабинет позволяет просматривать список мультикомпонентных загрузок и отменять мультикомпонентную загрузку. Чтобы инициировать мультикомпонентную загрузку самостоятельно, управлять размером частей объекта и возобновлять загрузку в случае сбоя, используйте API, AWS CLI и другие инструменты для работы с Object Storage.
Хранение частично загруженных объектов тарифицируется стандартным образом. Чтобы не платить за объекты, которые не загрузились полностью, отмените их загрузку.
Инструкция ниже описывает создание мультикомпонентной загрузки в Object Storage через AWS CLI и API.
Перед началом работы
Установите Git на ваше устройство.
Разбейте файл на части:
split -b <part_size> ./<file_name> <file_name_prefix>Где:
<part_size> — размер частей, на которые разбивается файл. Например, 10М. Файл разбивается на части по 10 МБ.
<file_name> — название файла, который необходимо разбить на части. Указывается с расширением, например .exe.
<file_name_prefix> — префикс, который будет присвоен частям файла, например part..
Посмотрите список частей файла:
ls -lПример результата:
total 137280-rwxr-xr-x 1 user 1049089 70287136 Jun 3 15:40 program.exe-rwxr-xr-x 1 user 1049089 10485760 Jun 3 15:49 part.aa-rw-r--r-- 1 user 1049089 10485760 Jun 3 15:49 part.ab-rw-r--r-- 1 user 1049089 10485760 Jun 3 15:49 part.ac-rw-r--r-- 1 user 1049089 10485760 Jun 3 15:49 part.ad-rw-r--r-- 1 user 1049089 10485760 Jun 3 15:49 part.ae-rw-r--r-- 1 user 1049089 10485760 Jun 3 15:49 part.af-rw-r--r-- 1 user 1049089 7372576 Jun 3 15:49 part.ag
Создайте мультикомпонентную загрузку
Если у вас еще нет AWS CLI, установите и настройте его.
Получите список бакетов:
aws s3api list-buckets --endpoint-url=https://s3.cloud.ruПример результата:
{"Buckets": [{"Name": "my-cool-bucket","CreationDate": "2025-06-03T13:07:14.240000+00:00"}],"Owner": {"ID": "2c952e80-5053-4005-8854-16b4********"},"Prefix": null}Создайте загрузку составного объекта:
aws s3api create-multipart-upload \--endpoint-url=https://s3.cloud.ru \--bucket <bucket_name> \--key <object_key>Где:
<bucket_name> — название бакета.
<object_key> — ключ, под которым объект будет храниться в бакете.
Пример результата:
{"Bucket": "my-cool-bucket","Key": "program.exe","UploadId": "ef017a868777********"}Сохраните значение поля UploadId — оно потребуется для выполнения следующих шагов.
Загрузите части объекта в бакет
Загрузите первую часть объекта:
aws s3api upload-part \--endpoint-url=https://s3.cloud.ru \--bucket <bucket_name> \--key <object_key> \--upload-id <upload_id> \--part-number <number> \--body <path_to_file>
Где:
<bucket_name> — название бакета.
<object_key> — ключ объекта, под которым он будет храниться в бакете.
<upload_id> — значение поля UploadId, полученное на предыдущем шаге.
<number> — порядковый номер части объекта.
Он необходим для задания правильной последовательности сборки частей в бакете. Номер задается в диапазоне от 1 до 10 000 включительно.
<path_to_file> — путь к части файла.
Пример результата:
{"ETag": "\"500def58592d4535345ce5d********\""}
Сохраните порядковый номер части объекта и значение поля ETag — они понадобятся при сборке объекта в бакете.
Повторите загрузку для всех частей файла. Сохраните порядковый номер и ETag каждого из них.
Соберите объект в бакете
Как только все части объекта окажутся в бакете, их необходимо собрать.
Выполните команду:
aws s3api complete-multipart-upload \--endpoint-url=https://s3.cloud.ru \--bucket <bucket_name> \--key <object_key> \--upload-id <upload_id> \--multipart-upload \'{"Parts": [{"PartNumber": <number_of_part_1>, "ETag": "<etag_of_part_1>"}, {"PartNumber": <number_of_part_2>, "ETag": "<etag_of_part_2>"}, ..., {"PartNumber": <number_of_part_n>, "ETag": "<etag_of_part_n>"}]}'Где:
<bucket_name> — название бакета.
<object_key> — ключ объекта, под которым он будет храниться в бакете.
<upload_id> — значение поля UploadId, полученное на шаге 1.
multipart-upload — объект с порядковыми номерами и ETag всех частей файла в нужном порядке. Пример:
'{"Parts": [{"PartNumber": 1, "ETag": "500def58592d4535345ce5d********"}, {"PartNumber": 2, "ETag": "ff9c93f9c1b08f65de594eca********"}]}'
Пример результата:
{"Location": "","Bucket": "my-cool-bucket","Key": "program.exe","ETag": "8c40927e665281099f9917a3********-7"}
Объект собран и доступен в бакете на вкладке Файловый менеджер.