Upload Part

Описание

Операция загружает часть многокомпонентной загрузки.

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

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

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

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


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

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

Запросы

Синтаксис

 PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
 Host: example-bucket.hb.bizmrg.com (example-bucket.ib.bizmrg.com)
 Date: date
 Content-Length: Size
 Authorization: authorization string

Параметры запроса

Эта операция не использует параметры запроса.

Заголовки запроса

Данная реализация операции может использовать следующие заголовки запроса в дополнение к заголовкам запроса, свойственным всем операциям. Ограничение по размеру заголовков запроса — 8 КБ. 


Имя
Описание
Обязательно
Content-Length

Размер части в байтах. Для получения дополнительной информации смотрите http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13.

  • Тип: Integer
  • По умолчанию: нет значения
Да
Content-MD5

Зашифрованная алгоритмом Base64 128-битная MD5-свертка данных из части. Этот заголовок может использоваться в качестве проверки целостности сообщения, чтобы удостовериться в том, что данные из части являются теми же данными, которые были отправлены изначально. Мы рекомендуем использовать механизм Content-MD5 в качестве сквозной проверки целостности. Для получения дополнительной информации смотрите RFC 1864.

  • Тип: String
  • По умолчанию: нет значения
Нет
Expect

Когда ваше приложение использует 100-continue, оно не отправляет тело запроса до тех пор, пока не получит подтверждение. Если сообщение оказывается отклоненным из-за заголовка, то тело сообщения не отправляется. Для получения дополнительной информации смотрите RFC 2616.

  • Тип: String
  • По умолчанию: нет значения
  • Допустимые значения: 100-continue
Нет

Заголовки запроса, характерные для шифрования на стороне сервера

Если вы указали в запросе на инициализацию многокомпонентной загрузки шифрование на стороне сервера при помощи пользовательского ключа шифрования, то вы должны предоставить идентичную информацию шифрования в каждой загружаемой части — для этой цели используются следующие заголовки:


Имя
Описание
Обязательно
x-amz-server-side?-encryption?-customer-algorithm

Указывает алгоритм, используемый для шифрования объекта.


  • Тип: String
  • По умолчанию: нет значения
  • Допустимое значение: AES256


Ограничения: необходимо также указать допустимые заголовки x-amz-server-side-encryption-customer-key и x-amz-server-side-encryption-customer-key-MD5.
Да
x-amz-server-side?-encryption?-customer-key

Указывает зашифрованный алгоритмом Base64 пользовательский ключ шифрования для использования сервисом в шифровании данных. Данное значение используется для сохранения объекта, а затем отбрасывается — сервис не хранит ключ шифрования. Этот ключ должен подходить для использования в алгоритме, указанном в заголовке x-amz-server-side-encryption-customer-algorithm.

  • Тип: String
  • По умолчанию: нет значения
Ограничения: необходимо также указать допустимые заголовки x-amz-server-side-encryption-customer-algorithm и x-amz-server-side-encryption-customer-key-MD5.
Да
x-amz-server-side?-encryption?-customer-key-MD5

Указывает зашифрованную алгоритмом Base64 128-битную MD5-свертку ключа шифрования согласно RFC 1321. Сервис использует данный заголовок для проверки целостности сообщения, чтобы удостовериться в том, что передача ключа шифрования была безошибочной.

  • Тип: String
  • По умолчанию: нет значения
Ограничения: необходимо также указать допустимые заголовки x-amz-server-side-encryption-customer-algorithm и x-amz-server-side-encryption-customer-key.
Да

Элементы запроса

Эта операция не использует элементы запроса.

Ответы

Заголовки ответа

Данная реализация операции может включать в себя следующие заголовки ответа в дополнение к заголовкам ответа, общим для всех ответов. 


Имя
Описание
x-amz-server-side?-encryption

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

  • Тип: String
x-amz-server-side-encryption-aws-kms-key-id

Если элемент x-amz-server-side-encryption присутствует и при этом его значение равно значению aws:kmz, то данный заголовок указывает идентификатор главного ключа шифрования службы управления ключами, использованного для объекта.

  • Тип: String
x-amz-server-side?-encryption?-customer-algorithm

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

  • Тип: String
  • Допустимые значения: AES256
x-amz-server-side?-encryption?-customer-key-MD5

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

  • Тип: String

Элементы ответов

Эта операция не использует элементы ответа.

Особые ошибки

Код ошибки
Описание
Код состояния HTTP
Префикс кода ошибки SOAP
NoSuchUpload
Указанная многокомпонентная загрузка не существует. Возможно, идентификатор загрузки неверен, или многокомпонентная загрузка была прервана или завершена.
404 Not Found
Client

Примеры

Пример 1. Запрос

Следующий запрос PUT загружает часть (номер 1) многокомпонентной загрузки. Этот запрос включает в себя идентификатор загрузки, который вы получаете в ответ на ваш запрос инициализации многокомпонентной загрузки.

 PUT /my-movie.m2ts?partNumber=1&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
 Host: example-bucket.hb.bizmrg.com (example-bucket.ib.bizmrg.com)
 Date: Mon, 1 Nov 2010 20:34:56 GMT
 Content-Length: 10485760
 Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==
 Authorization: authorization string
 
 ***данные из части опущены***

Пример 2. Ответ

Данный запрос включает в себя заголовок ETag. Вам необходимо сохранить данное значение и использовать его при отправке запроса на завершение многокомпонентной загрузки.

 HTTP/1.1 200 OK
 x-amz-id-2: Vvag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
 x-amz-request-id: 656c76696e6727732072657175657374
 Date: Mon, 1 Nov 2010 20:34:56 GMT
 ETag: "b54357faf0632cce46e942fa68356b38"
 Content-Length: 0
 Connection: keep-alive
 Server: HbBizmrg

Пример 3.  Загрузка части с ключом шифрования в запросе на шифрование на стороне сервера

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

 PUT /example-object?partNumber=1&uploadId=EXAMPLEJZ6e0YupT2h66iePQCc9IEbYbDUy4RTpMeoSMLPRp8Z5o1u8feSRonpvnWsKKG35tI2LB9VDPiCgTy.Gq2VxQLYjrue4Nq.NBdqI- HTTP/1.1 
 Host: example-bucket.hb.bizmrg.com (example-bucket.ib.bizmrg.com)
 Authorization: authorization string
 Date: Wed, 28 May 2014 19:40:11 +0000
 x-amz-server-side-encryption-customer-key: g0lCfA3Dv40jZz5SQJ1ZukLRFqtI5WorC/8SEEXAMPLE
 x-amz-server-side-encryption-customer-key-MD5: ZjQrne1X/iTcskbY2example
 x-amz-server-side-encryption-customer-algorithm: AES256

В ответе ниже сервис возвращает заголовки, характерные для метода шифрования, указывая используемый алгоритм шифрования и MD5-свертку ключа шифрования, который вы предоставили в запросе.

 HTTP/1.1 100 Continue HTTP/1.1 200 OK
 x-amz-id-2: Zn8bf8aEFQ+kBnGPBc/JaAf9SoWM68QDPS9+SyFwkIZOHUG2BiRLZi5oXw4cOCEt
 x-amz-request-id: 5A37448A37622243
 Date: Wed, 28 May 2014 19:40:12 GMT
 ETag: "7e10e7d25dc4581d89b9285be5f384fd"
 x-amz-server-side-encryption-customer-algorithm: AES256
 x-amz-server-side-encryption-customer-key-MD5: ZjQrne1X/iTcskbY2example