Объекты S3: загрузка, скачивание, копирование и удаление

Объект – файл, сохраненный в S3-бакете под определенным ключом. В S3 нет каталогов в привычном для файловой системы смысле, поэтому веб-интерфейс показывает лишь структуру папок для удобства, а фактически объекты хранятся в плоском пространстве имен, где путь является частью ключа.

Ключ объекта: уникально определяет объект внутри бакета. Например, ключ documents/report.pdf визуально может отображаться как файл report.pdf в папке documents.

Что видно при выборе объекта

В правой панели веб-интерфейса отображаются имя и размер объекта, его ключ и дата последнего изменения. Для временной ссылки на скачивание используется отдельный раздел документации Presigned URL.

Пример карточки объекта
Пример карточки объекта. Значения в изображении обезличены.

 

1. Загрузка объекта

Через веб-интерфейс

  1. Откройте нужный бакет.
  2. Нажмите «Загрузить» в правой верхней части страницы.
  3. Выберите файл на локальном устройстве или перетащите его в область загрузки.
  4. Дождитесь окончания передачи и убедитесь, что объект появился в бакете.
Окно загрузки объекта в S3
Окно загрузки объекта через веб-интерфейс PC-Storage.

Для объектов размером от 500 МБ веб-интерфейс использует multipart-загрузку. При загрузке через веб-интерфейс в именах объектов не допускаются символы #, &, *, /, :, | и %. Если такой символ найден, интерфейс предлагает переименовать файл или выполнить автоматическое переименование.

Пример карточки объекта
Пример карточки объекта. Значения в изображении обезличены.
Ошибка в имени в PC-Storage
Предупреждение веб-интерфейса о недопустимых символах в имени файла.

Через AWS CLI: put-object

Метод put-object загружает объект и его метаданные в Object Storage:

aws s3api put-object --bucket example-bucket --key documents/report.pdf --body /path/to/report.pdf --endpoint-url=https://eu-s3.platformcraft.com

Успешный ответ содержит ETag загруженного объекта:

{
  "ETag": "\"e3e22b84acfc081c7dff7321ba911354\""
}
ПараметрНазначение
bucketИмя бакета.
keyКлюч, под которым объект будет сохранен.
bodyПуть к локальному файлу, передаваемому в команде AWS CLI.

 

Object Lock: put-object также поддерживает параметры object-lock-mode и object-lock-retain-until-date. Их использование разобрано в отдельной странице «Версионирование и защита объектов: Versioning и Object Lock».

 

2. Скачивание объекта

Через веб-интерфейс

Выберите объект в бакете. На панели «Возможные действия» доступны скачивание, переименование, копирование и удаление. Действия, кроме переименования, можно выполнять сразу с несколькими выбранными объектами.

Действия с выбранным объектом
Действия с выбранным объектом в веб-интерфейсе: скачивание, переименование, копирование и удаление.

Через AWS CLI: get-object

Метод возвращает объект и сведения о нем:

aws s3api get-object --bucket example-bucket --key documents/report.pdf --endpoint-url=https://eu-s3.platformcraft.com ./report.pdf

В ответе могут быть указаны LastModified, ContentLength, ETag, ContentType, Metadata и StorageClass.

Версии: если требуется получить конкретную версию объекта, в get-object можно передать version-id.

 

3. Просмотр метаданных

Чтобы получить метаданные без скачивания содержимого объекта, используйте head-object.

aws s3api head-object --bucket example-bucket --key documents/report.pdf --endpoint-url=https://eu-s3.platformcraft.com

Пример ответа:

{
  "LastModified": "2026-09-29T10:30:00+00:00",
  "ContentLength": 391168,
  "ETag": "\"e3e22b84acfc081c7dff7321ba911354\"",
  "ContentType": "application/pdf",
  "Metadata": {},
  "StorageClass": "STANDARD"
}

 

4. Копирование объекта

Через веб-интерфейс выберите объект и используйте действие копирования. Через S3 API копирование выполняется методом copy-object, где указываются бакет назначения, новый ключ и источник копирования.

aws s3api copy-object --bucket example-bucket --key archive/report-copy.pdf --copy-source example-bucket/documents/report.pdf --endpoint-url=https://eu-s3.platformcraft.com

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

{
  "CopyObjectResult": {
    "ETag": "\"e3e22b84acfc081c7dff7321ba911354\"",
    "LastModified": "2026-09-29T10:35:00+00:00"
  }
}

 

5. Удаление объектов

Удалить один объект

aws s3api delete-object --bucket example-bucket --key documents/report.pdf --endpoint-url=https://eu-s3.platformcraft.com

Если Versioning отключен, объект удаляется обычным образом. В бакете с включенным Versioning удаление без version-id устанавливает Delete Marker, а предыдущая версия остается в хранилище.

Защищенный Object Lock объект может не удаляться. Подробнее вы можете узнать в руководстве по Versioning и Object Lock.

Удалить несколько объектов

delete-objects удаляет объекты по списку ключей и выполняется быстрее, чем последовательное удаление каждого объекта отдельным запросом. В одном запросе можно передать не более 1000 ключей.

aws s3api delete-objects --bucket example-bucket --delete '{"Objects":[{"Key":"file-1.pdf"},{"Key":"file-2.pdf"}]}' --endpoint-url=https://eu-s3.platformcraft.com

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

 

6. Получение списка объектов

В веб-интерфейсе содержимое отображается после открытия бакета. Через API доступны list-objects и list-objects-v2.

list-objects

aws s3api list-objects --bucket example-bucket --max-items 5 --endpoint-url=https://eu-s3.platformcraft.com

При выдаче используется пагинация: за один запрос в документации указано получение списка не длиннее 10 000 объектов. Для более длинного списка выполняются последующие запросы.

ПараметрНазначение
--max-itemsКоличество объектов, выводимых при листинге.
prefixВозвращает объекты, ключ которых начинается с указанного префикса.
delimiterИспользуется как разделитель в ключах; объекты попадают в Contents, а визуальные «директории» - в CommonPrefixes.

list-objects-v2

aws s3api list-objects-v2 --bucket example-bucket --endpoint-url=https://eu-s3.platformcraft.com

Метод возвращает содержимое бакета во второй версии операции листинга. Для работы с версиями объектов используется отдельный метод list-object-versions.

 

7. Типовые ошибки

ОшибкаЧто проверить
NoSuchKeyКлюч объекта и, если используется Versioning, VersionID.
404 при HeadObjectКлюч объекта и имя бакета.
AccessDeniedПрава доступа к бакету/объекту и корректность выбранного бакета.
Could not connect to the endpoint URLEndpoint S3.
Error parsing parameter '--body'Путь к локальному файлу в put-object.
InvalidRequest: object protected by object lockНаличие Object Lock / Retention / Legal Hold у объекта.

Быстрая диагностика: если объект не находится, сначала проверьте точное имя бакета и ключ. Если операция возвращает AccessDenied, дополнительно проверьте IAM и Bucket Policy. Если объект нельзя удалить, проверьте Versioning и Object Lock.

Подпишитесь на наши новости,
чтобы быть в курсе всех событий

    Прокрутить вверх