База знаний LinxCloud Services

Multipart

Благодаря составной или многокомпонентной загрузке объекты в Объектном хранилище Linx S3 можно сохранять по частям. Стоит использовать составную загрузку для объектов от 100 МБ.

Шаги многокомпонентной загрузки:

  • Initiate Multipart Upload — инициализация загрузки.
  • Upload Part — загрузка объекта по частям.
  • Complete Multipart Upload — завершение загрузки путем объединения ранее загруженных частей.
  • Abort Multipart Upload — прерывание загрузки
  • List Parts — возврат списка загруженных частей.

 

Initiate Multipart Upload

Эта операция начинает составную загрузку и возвращает идентификатор загрузки, используемый для объединения всех частей данной загрузки. Нужно указывать этот идентификатор для каждом из последующих запросов на загрузку части.

При настройке правила жизненного цикла на прерывание неоконченных многокомпонентных загрузок, загрузка будет завершена в течение количества дней, которое указанно в конфигурации жизненного цикла бакета. Иначе для незавершенной составной загрузки становится доступна операция прерывания, и сервис прерывает загрузку.

Примечание

После начала составной загрузки и собственно загрузки одной или нескольких частей необходимо завершить или прервать многокомпонентную загрузку, чтобы приостановить списание оплаты за хранение загруженных частей. Только после завершения или прерывания многокомпонентной загрузки LinxCloud S3 освобождает место, которое предоставлено частям в хранилище, и прекращает производить списание оплаты за хранение этих частей.

Запрос:

1POST /multipart-file.tar.gz?uploads HTTP/1.1
2Host: my-test-bucket1.hb.bizmrg.com
3x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
4x-amz-date:20200831T174652Z
5Authorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=e356966fff5a3d49d19c0e44e0fdba294964384a58061d3e60dfd1a4a5b605ad

 

Ответ:

1HTTP/1.1 200 OK
2Content-Length: 286
3Content-Type: application/xml
4Date: Mon, 31 Aug 2020 17:46:53 GMT
5x-amz-request-id: tx00000000000000ab66a13-005991e20d-66a8-ru-mska
6Connection: close
7
8<?xml version="1.0" encoding="UTF-8"?>
9  <InitiateMultipartUploadResult xmlns="https://s3.amazonaws.com/doc/2006-03-01/">
10    <Bucket>static-images</Bucket>
11    <Key>multipart-file.tar.gz</Key>
12    <UploadId>2~iCw_lDY8VoBhoRrIJbPMrUqnE3Z-3Qh</UploadId>
13  </InitiateMultipartUploadResult>

 

 

Upload Part

Эта операция используется для загрузки части составной загрузки. Для выполнения операции нужно предоставить данные из части в запросе. Операция загрузки части (копии) используется для загрузки части из существующего объекта.

Часть может иметь любой номер от 1 до 10 000 включительно. Номер части однозначно определяет часть и ее положение в создаваемом объекте. Если загружается новая част с уже существующим номером, то имеющаяся часть будет перезаписана. Размер каждой части, за исключением последней (она не имеет ограничения по размеру), должен быть не менее 5 МБ.

Рекомендуется указать заголовок Content-MD5 в запросе загрузки части, чтобы удостовериться в том, что данные не исказятся при их передаче по сети. LinxCloud сверяет данные из частей с предоставленным значением MD5-хеша и при их несовпадении возвращает ошибку.

Запрос:

1PUT /multipart-file.tar.gz?partNumber=1&uploadId=2~iCw_lDY8VoBhoRrIJbPMrUqnE3Z-3Qh HTTP/1.1
2Host: my-test-bucket1.hb.bizmrg.com
3Content-Length: 5242880
4x-amz-content-sha256: 6ab0931e613fd0cd39af0fa4733edb6ad942df0ad33e057713d44df7195b6ecf
5x-amz-date: 20200831T184459Z
6Authorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=2e4adca0a3164af8717f340ca874b4f3036dd0294b590a70f2147427221ca1e8

 

Ответ:

1HTTP/1.1 200 OK
2Content-Length: 0
3Content-Type: application/xml
4Date: Mon, 31 Aug 2020 18:45:01 GMT
5Etag: "d8d3ed3a4de016917a814a2cf5acad3c"
6x-amz-request-id: tx00000000000000ab85dab-005991efac-66a8-ru-mska
7Connection: close

 

 

Complete Multipart Upload

Эта операция для завершения составной загрузки, объединяя уже загруженные части. По этому запросу LinxCloud объединяет все загруженные части в возрастающем порядке по номеру частей, создавая новый объект. В запросе на завершение составной загрузки нужно предоставить список частей. Для каждой части из списка следует предоставить номер части и значение заголовка ETag, возвращаемое после загрузки этой части.

После начала обработки запроса, LinxCloud отправляет заголовок ответа HTTP, содержащий ответ «200 OK». В процессе обработки запроса периодически отправляются пробельные символы, чтобы не допустить превышения лимита времени ожидания. Нужно проверять тело ответа для определения успешности исполнения запроса, т.к. может возникнуть ошибка в запросе после отправления первоначального ответа «200 OK»

Запрос:

1POST /multipart-file.tar.gz?uploadId=2~iCw_lDY8VoBhoRrIJbPMrUqnE3Z-3Qh HTTP/1.1
2Host: my-test-bucket1.hb.bizmrg.com
3Content-Length: 358
4x-amz-content-sha256: 6ab0931e613fd0cd39af0fa4733edb6ad942df0ad33e057713d44df7195b6ecf
5x-amz-date: 20200831T184459Z
6Authorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=2e4adca0a3164af8717f340ca874b4f3036dd0294b590a70f2147427221ca1e8
7
8<CompleteMultipartUpload>
9  <Part>
10    <PartNumber>1</PartNumber>
11    <ETag>"d8d3ed3a4de016917a814a2cf5acad3c"</ETag>
12  </Part>
13  <Part>
14    <PartNumber>2</PartNumber>
15    <ETag>"adf5feafc0fe4632008d5cb30beb1c49"</ETag>
16  </Part>
17  <Part>
18    <PartNumber>3</PartNumber>
19    <ETag>"363f6bb50866541d78e5f6f626592263"</ETag>
20  </Part>
21</CompleteMultipartUpload>

 

Ответ:

1HTTP/1.1 200 OK
2Content-Length: 336
3Content-Type: application/xml
4Date: Mon, 31 Aug 2020 18:45:01 GMT
5x-amz-request-id: tx00000000000000ab962c8-005991f6fe-66a8-ru-mska
6Connection: close
7
8<?xml version="1.0" encoding="UTF-8"?>
9  <CompleteMultipartUploadResult xmlns="https://s3.amazonaws.com/doc/2006-03-01/">
10    <Location>my-test-bucket1.hb.bizmrg.com</Location>
11    <Bucket>my-test-bucket1</Bucket>
12    <Key>multipart-file.tar.gz</Key>
13    <ETag>f935869350d7cbfcdd219df3f377531b-3</ETag>
14  </CompleteMultipartUploadResult>

 

 

Abort Multipart Upload

Эта операция может прерывать многокомпонентную загрузку. Дополнительные части уже нельзя загрузить, используя идентификатор загрузки прерванной составной загрузки. Место, выделенное для хранения ранее загруженных частей, будет освобождено. Если происходит загрузка каких-либо частей, то такая операция может завершиться или прерваться. И может понадобится многократное прерывание составной загрузки для полного высвобождения пространства, которое занимают все части.

Запрос:

DELETE /multipart-file.tar.gz?uploadId=2~iCw_lDY8VoBhoRrIJbPMrUqnE3Z-3Qh HTTP/1.1
Host: my-test-bucket1.hb.bizmrg.com
Content-Length: 5242880
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
x-amz-date:20200831T202611Z
Authorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=9e13d3f9e71ca5fb034fe66e92c60e30b3az3e177573702dd11d2b541358bf92

Ответ:

1HTTP/1.1 200 OK
2Date: Mon, 31 Aug 2020 18:45:01 GMT
3x-amz-request-id: tx00000000000000abbaefe-0059920764-66a8-ru-mska
4Connection: close

 

 

List Parts

Эта операция используется для возвращения списка частей, которые загружены по определенной многокомпонентной загрузке. Операция обязана содержать идентификатор загрузки, полученный после отправки запроса на инициализацию составной загрузки. Подобный запрос возвращает не более 1000 загруженных частей.  Указав параметр запроса max-parts, можно ограничить количество возвращаемых частей. Если многокомпонентная загрузка состоит более чем из 1000 частей, то ответ возвращает элемент NextPartNumberMarker и поле IsTruncated со значением true. В последующих запросах на просмотр списка частей можно включать параметр строки запроса part-number-marker, устанавливая для него значение поля NextPartNumberMarker из предыдущего ответа.

Запрос:

GET /?uploads&delimiter=Delimiter&encoding-type=EncodingType&key-marker=KeyMarker&max-uploads=MaxUploads&prefix=Prefix&upload-id-marker=UploadIdMarker HTTP/1.1

PUT /multipart-file.tar.gz?partNumber=1&uploadId=2~iCw_lDY8VoBhoRrIJbPMrUqnE3Z-3Qh HTTP/1.1
Host: my-test-bucket1.hb.bizmrg.com
Content-Length: 5242880
x-amz-content-sha256: 6ab0931e613fd0cd39af0fa4733edb6ad942df0ad33e057713d44df7195b6ecf
x-amz-date: 20200831T184459Z
Authorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=2e4adca0a3164af8717f340ca874b4f3036dd0294b590a70f2147427221ca1e8

Ответ:

1HTTP/1.1 200 OK
2Content-Length: 980
3Content-Type: application/xml
4Date: Mon, 31 Aug 2020 18:45:01 GMT
5Etag: "d8d3ed3a4de016917a814a2cf5acad3c"
6x-amz-request-id: tx00000000000000ab85dab-005991efac-66a8-ru-mska
7Connection: close
8
9<?xml version="1.0" encoding="UTF-8"?>
10  <ListPartsResult xmlns="https://s3.amazonaws.com/doc/2006-03-01/">
11    <Bucket>my-test-bucket1</Bucket>
12    <Key>multipart-file.tar.gz</Key>
13    <UploadId>2~iCw_lDY8VoBhoRrIJbPMrUqnE3Z-3Qh</UploadId>
14    <StorageClass>STANDARD</StorageClass>
15    <PartNumberMarker>0</PartNumberMarker>
16    <NextPartNumberMarker>1</NextPartNumberMarker>
17    <MaxParts>1000</MaxParts>
18    <IsTruncated>false</IsTruncated>
19    <Owner>
20      <ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID>
21      <DisplayName>Linx Cloud_UserName</DisplayName>
22    </Owner>
23    <Part>
24      <LastModified>2017-08-14T18:45:01.601Z</LastModified>
25      <PartNumber>1</PartNumber>
26      <ETag>"d8d3ed3a4de016917a814a2cf5acad3c"</ETag>
27      <Size>5242880</Size>
28    </Part>
29    <Part>
30      <LastModified>2017-08-14T18:45:01.601Z</LastModified>
31      <PartNumber>2</PartNumber>
32      <ETag>"adf5feafc0fe4632008d5cb30beb1c49"</ETag>
33      <Size>5242880</Size>
34    </Part>
35  </ListPartsResult>
Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!