Справочник команд AWS CLI для S3

Справочник команд для объектного хранилища RTCloud. Во всех примерах используются исходные значения: эндпоинт https://s3-msk2.rtcloud.ru, профиль rtcloud, имя бакета в виде подстановки <ИМЯ_БАКЕТА>. Значения в угловых скобках подставляйте свои.

Два набора команд. aws s3 — высокоуровневые, повторяют файловые операции (cp, ls, sync и т. д.). aws s3api — прямой доступ к S3 API для точного контроля: версии, политики, теги, блокировки, шифрование.

Про поддержку. Команды приведены по спецификации S3. Отдельные возможности (Object Lock, шифрование на стороне сервиса, presigned URL) могут поддерживаться хранилищем RTCloud не полностью — перед использованием в проде проверьте их на своём бакете.


1. Операции с бакетами

Список всех бакетов

aws s3 ls --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Удалить пустой бакет

aws s3 rb s3://<ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Удалить бакет со всем содержимым

aws s3 rb s3://<ИМЯ_БАКЕТА> --force \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru
Важно! --force удаляет только актуальные версии. В бакете с версионированием останутся прежние версии и маркеры удаления, и бакет не удалится — версии нужно убирать отдельно (раздел 8).

Проверить доступ к бакету

aws s3api head-bucket --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Размер и число объектов

aws s3 ls s3://<ИМЯ_БАКЕТА> --recursive --human-readable --summarize \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Определить площадку (регион) бакета

aws s3api get-bucket-location --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

2. Просмотр объектов

Список объектов в бакете

aws s3 ls s3://<ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Список внутри префикса, рекурсивно

aws s3 ls s3://<ИМЯ_БАКЕТА>/documents/ --recursive \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Метаданные одного объекта (размер, дата, тип, ETag)

aws s3api head-object \
  --bucket <ИМЯ_БАКЕТА> --key documents/report.pdf \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

3. Загрузка и скачивание

Загрузить файл

aws s3 cp report.pdf s3://<ИМЯ_БАКЕТА>/documents/ \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Скачать объект

aws s3 cp s3://<ИМЯ_БАКЕТА>/documents/report.pdf ./ \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Загрузить каталог целиком

aws s3 cp ./localdir s3://<ИМЯ_БАКЕТА>/backup/ --recursive \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Скачать префикс целиком

aws s3 cp s3://<ИМЯ_БАКЕТА>/backup/ ./localdir --recursive \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Загрузить с указанием типа содержимого и метаданных

aws s3 cp page.html s3://<ИМЯ_БАКЕТА>/ \
  --content-type text/html \
  --metadata author=team,project=docs \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

4. Синхронизация

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

Каталог → бакет

aws s3 sync ./localdir s3://<ИМЯ_БАКЕТА>/backup/ \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Бакет → каталог

aws s3 sync s3://<ИМЯ_БАКЕТА>/backup/ ./localdir \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

С удалением лишнего в приёмнике

--delete делает приёмник точной копией источника.

aws s3 sync ./localdir s3://<ИМЯ_БАКЕТА>/backup/ --delete \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Предпросмотр без изменений

aws s3 sync ./localdir s3://<ИМЯ_БАКЕТА>/backup/ --delete --dryrun \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

5. Копирование и перемещение

Скопировать объект внутри хранилища

aws s3 cp s3://<ИМЯ_БАКЕТА>/a/file.txt s3://<ИМЯ_БАКЕТА>/b/file.txt \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Переместить или переименовать

aws s3 mv s3://<ИМЯ_БАКЕТА>/old.txt s3://<ИМЯ_БАКЕТА>/new.txt \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

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

Как удаляются данные — окончательно или обратимо — зависит от версионирования. Подробный разбор смотрите в статье «Удаление объектов в S3: маркеры удаления и версии».

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

aws s3 rm s3://<ИМЯ_БАКЕТА>/documents/report.pdf \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Удалить префикс целиком

aws s3 rm s3://<ИМЯ_БАКЕТА>/documents/ --recursive \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Удалить по маске

aws s3 rm s3://<ИМЯ_БАКЕТА>/logs/ --recursive \
  --exclude "*" --include "*.tmp" \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Удалить конкретную версию (необратимо)

aws s3api delete-object \
  --bucket <ИМЯ_БАКЕТА> --key report.pdf \
  --version-id <ID_ВЕРСИИ> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

7. Версионирование бакета

Включить версионирование

aws s3api put-bucket-versioning \
  --bucket <ИМЯ_БАКЕТА> \
  --versioning-configuration Status=Enabled \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Приостановить версионирование

Ранее созданные версии сохраняются; новые записи перестают порождать версии. Полностью отключить версионирование нельзя.

aws s3api put-bucket-versioning \
  --bucket <ИМЯ_БАКЕТА> \
  --versioning-configuration Status=Suspended \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Проверить состояние

aws s3api get-bucket-versioning \
  --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Пустой ответ означает, что версионирование никогда не включалось; иначе вернётся "Status": "Enabled" или "Suspended".


8. Работа с версиями объектов

Требуется включённое версионирование. Подробнее смотрите в статье «Как включить версионирование через AWS CLI».

Список версий и маркеров удаления

aws s3api list-object-versions \
  --bucket <ИМЯ_БАКЕТА> --prefix report.pdf \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Компактный вывод: ключ, версия, размер, признак актуальной

aws s3api list-object-versions \
  --bucket <ИМЯ_БАКЕТА> \
  --query "Versions[*].[Key, VersionId, Size, IsLatest]" \
  --output table \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Скачать конкретную версию

aws s3api get-object \
  --bucket <ИМЯ_БАКЕТА> --key report.pdf \
  --version-id <ID_ВЕРСИИ> report-old.pdf \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Восстановить прежнюю версию (копированием поверх текущей)

aws s3api copy-object \
  --bucket <ИМЯ_БАКЕТА> --key report.pdf \
  --copy-source "<ИМЯ_БАКЕТА>/report.pdf?versionId=<ID_ВЕРСИИ>" \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Оценить объём с учётом всех версий

aws s3api list-object-versions \
  --bucket <ИМЯ_БАКЕТА> \
  --query "sum(Versions[].Size)" \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

9. Правила жизненного цикла

Применить политику из файла

aws s3api put-bucket-lifecycle-configuration \
  --bucket <ИМЯ_БАКЕТА> \
  --lifecycle-configuration file://lifecycle.json \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Просмотреть действующие правила

aws s3api get-bucket-lifecycle-configuration \
  --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Удалить все правила

aws s3api delete-bucket-lifecycle \
  --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Состав файла lifecycle.json и примеры правил — в статье «Как настроить правило жизненного цикла через AWS CLI».


10. Незавершённые мультипартовые загрузки

Список незавершённых загрузок

aws s3api list-multipart-uploads \
  --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Прервать загрузку и освободить место

aws s3api abort-multipart-upload \
  --bucket <ИМЯ_БАКЕТА> --key <ИМЯ_ОБЪЕКТА> \
  --upload-id <ID_ЗАГРУЗКИ> \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Полезные флаги

Флаг Действие
--recursive Обрабатывать все объекты внутри префикса
--dryrun Показать результат без реальных изменений
--human-readable Размеры в КБ, МБ, ГБ вместо байтов
--summarize Добавить итог: число объектов и суммарный объём
--exclude, --include Фильтры по маске: --exclude "*" --include "*.log"
--delete Для sync: удалять в приёмнике лишнее
--output table Табличный вывод для команд s3api
--query Выбор нужных полей из ответа (синтаксис JMESPath)
--page-size Размер страницы при обходе больших бакетов


Смотрите также:

к Работе с S3 RTCloud


Рейтинг@Mail.ru Яндекс.Метрика