[Документация Yandex Cloud](../../../../index.md) > [Yandex Object Storage](../../../index.md) > Справочник API > [AWS S3 REST](../../index.md) > [REST](../index.md) > Object > PutObject

# Object Storage API, REST совместимый с Amazon S3: PutObject

Загружает объект и его метаданные в Yandex Object Storage.

{% note info %}

Object Storage не блокирует объект на запись и может принимать одновременно несколько запросов на запись одного объекта, однако по умолчанию пользователь сможет получить из Object Storage только последний записанный объект. Чтобы при перезаписи или удалении объектов сохранялась история, включите [версионирование](../../../concepts/versioning.md).

{% endnote %}

Чтобы убедиться, что объект передан по сети без повреждений, используйте заголовок `Content-MD5`. Object Storage вычислит `MD5` для сохраненного объекта и если вычисленная `MD5` не совпадет с переданной в заголовке, вернет ошибку. Эту проверку можно выполнить и на стороне клиента, сравнив `ETag` из ответа Object Storage с предварительно вычисленной `MD5`.

{% note warning %}

Если в бакете настроены [блокировки версий объектов по умолчанию](../../../concepts/object-lock.md#default), использовать заголовок `Content-MD5` обязательно.

{% endnote %}

Подробнее о подготовке к работе с API и общем виде запроса в разделе [Как пользоваться S3 API](../../index.md).

## Запрос {#request}

```http
PUT /{bucket}/{key} HTTP/2
```

### Path параметры {#path-parameters}

Параметр | Описание
----- | -----
`bucket` | Имя бакета.
`key` | Ключ объекта. Идентификатор, под которым объект будет сохранен в Object Storage.


### Заголовки {#request-headers}

Используйте в запросе необходимые [общие заголовки](../common-request-headers.md).

Дополнительно можно использовать заголовки, перечисленные в таблице ниже.


Заголовок | Описание
----- | -----
`If-Match` | Определяет условие выполнения операции. Операция будет выполнена, только если текущая версия объекта по указанному ключу существует, и ее `ETag` совпадает со значением в заголовке `If-Match`.
`If-None-Match` | Определяет условие выполнения операции. Операция будет выполнена, только если в бакете нет объекта с таким же ключом. В значении заголовка укажите `*`.
`X-Amz-Meta-*` | Пользовательские метаданные объекта.<br/><br/>Все заголовки, начинающиеся с `X-Amz-Meta-`, Object Storage преобразует по правилу: `X-Amz-Meta-foo-bar_baz` → `X-Amz-Meta-Foo-Bar_baz`.<br/><br/>Общий размер пользовательских заголовков не должен превышать 2KB. Размер пользовательских данных определяется как длина строки в кодировке UTF-8. В размере учитываются и названия заголовков и их значения.
`X-Amz-Storage-Class` | [Класс хранилища](../../../concepts/storage-class.md) объекта.<br/><br/>Может иметь любое из значений:<ul><li>`STANDARD` — стандартное хранилище.</li><li>`COLD`, `STANDARD_IA` или `NEARLINE` — холодное хранилище.</li><li>`ICE` или `GLACIER` — ледяное хранилище.</li></ul>Если заголовок не указан, то объект сохраняется в хранилище, установленном в настройках бакета.
`X-Amz-Server-Side-Encryption` | Алгоритм шифрования загружаемого объекта. Доступные значения: `aws:kms`.
`X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id` | Идентификатор [ключа KMS](../../../../kms/concepts/key.md) для шифрования загружаемого объекта.
`X-Amz-Object-Lock-Mode` | <p>Тип временной [блокировки](../../../concepts/object-lock.md), устанавливаемой на объект (если бакет [версионируемый](../../../concepts/versioning.md) и в нем включен механизм блокировок):</p><ul><li>`GOVERNANCE` — временная управляемая блокировка.</li><li>`COMPLIANCE` — временная строгая блокировка.</li></ul><p>Вы можете установить на версию объекта только временную блокировку (заголовки `X-Amz-Object-Lock-Mode` и `X-Amz-Object-Lock-Retain-Until-Date`), только бессрочную блокировку (`X-Amz-Object-Lock-Legal-Hold`) или обе сразу. Подробнее об их совместной работе в разделе [Типы блокировок](../../../concepts/object-lock.md#types).</p>
`X-Amz-Object-Lock-Retain-Until-Date` | Дата и время окончания временной блокировки в любом из форматов, описанных в [стандарте HTTP](https://www.rfc-editor.org/rfc/rfc9110#name-date-time-formats). Например, `Mon, 12 Dec 2022 09:00:00 GMT`. Указывается только вместе с заголовком `X-Amz-Object-Lock-Mode`.
`X-Amz-Object-Lock-Legal-Hold` | <p>Статус бессрочной [блокировки](../../../concepts/object-lock.md), устанавливаемой на объект (если бакет [версионируемый](../../../concepts/versioning.md) и в нем включен механизм блокировок):</p><ul><li>`ON` — блокировка установлена.</li><li>`OFF` — блокировка не установлена.</li></ul><p>Вы можете установить на версию объекта только временную блокировку (заголовки `X-Amz-Object-Lock-Mode` и `X-Amz-Object-Lock-Retain-Until-Date`), только бессрочную блокировку (`X-Amz-Object-Lock-Legal-Hold`) или обе сразу. Подробнее об их совместной работе в разделе [Типы блокировок](../../../concepts/object-lock.md#types).</p>


С помощью заголовков, перечисленных ниже, можно установить [ACL](../../../concepts/acl.md) для загружаемого объекта.

Заголовок | Описание
--- | ---
`X-Amz-Acl` | Устанавливает [предопределенный ACL](../../../concepts/acl.md#predefined-acls) для объекта.
`X-Amz-Grant-Read` | Устанавливает получателю доступа разрешение на чтение объекта.
`X-Amz-Grant-Read-Acp` | Устанавливает получателю доступа разрешение на чтение ACL объекта.
`X-Amz-Grant-Write-Acp` | Устанавливает получателю доступа разрешение на запись ACL объекта.
`X-Amz-Grant-Full-Control` | Устанавливает получателю доступа разрешения: `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP` на объект.

Значение для заголовков `X-Amz-Grant-*` представляет собой разделенный запятыми список получателей доступа. Каждый получатель доступа идентифицируется структурой вида `<тип_получателя_доступа>:<идентификатор_получателя_доступа>`. Object Storage поддерживает следующие типы получателей:
* `id` — получатель доступа — пользователь облака.
* `uri` — получатель доступа — публичная группа.

Пример:

```http
X-Amz-Grant-Read: uri="http://acs.amazonaws.com/groups/s3/AuthenticatedUsers"
```


## Ответ {#response}

### Заголовки {#response-headers}

Ответ может содержать только [общие заголовки](../common-response-headers.md).

### Коды ответов {#response-codes}

Перечень возможных ответов смотрите в разделе [Ответы](../response-codes.md).

#### Связанные статьи {#related-articles}

* [Объект](../../../concepts/object.md)

* [Загрузка объекта](../../../operations/objects/upload.md)

#### Полезные ссылки {#see-also}

* [Начало работы с AWS S3 API в Yandex Object Storage](../../s3-api-quickstart.md)

* [Отладка запросов с помощью утилиты AWS CLI](../../signing-requests.md#debugging)

* [Пример отправки подписанного запроса с помощью утилиты curl](../../../api-ref/authentication.md#s3-api-example)

* [Пример кода для генерации подписи](../../../concepts/pre-signed-urls.md#code-examples)