AWS CLI — это интерфейс командной строки для работы с сервисами Amazon. В интерфейсе доступен набор команд для управления файлами в облачном хранилище.
Установка
На текущий момент для полноценной работы с кластером необходимо использовать AWS CLI первой версии. Для установки AWS CLI воспользуйтесь pipx:
После установки проверьте версию AWS CLI с помощью команды:
Настройка
Для настройки AWS для работы с нашим объектным хранилищем S3 используйте команду:
Появится интерактивная строка с запросом реквизитов для подключения. Заполните их следующим образом, подставив необходимые значения из настроек бакета в вашей панели управления:
Будет создана скрытая директория .aws с файлами config и credentials, которые содержат настройки AWS и ключи для авторизации соответственно.
Работа с файлами
Рассмотрим, как выполнять основные операции с объектами в бакете.
Получение списка файлов в бакете
Чтобы получить список файлов, используйте ls:
Загрузка локального файла в бакет
Для загрузки файлов используется cp. В примере ниже загружается файл text.txt:
Удаление файла в бакете
Для удаления файла используйте команду rm. В примере ниже удаляем файл text.txt:
Синхронизация файлов
Для синхронизации файлов между локальной директорией (в примере это текущая директория — .) и бакетом используется sync:
Подробную информацию по этим и другим командам можно найти в документации AWS.
Составная загрузка
Для выполнения multipart-загрузки с помощью AWS CLI необходимо использовать команду aws s3api. Этот процесс предполагает создание и завершение multipart-загрузки в несколько шагов.
Предварительная подготовка
Перед выполнением multipart-загрузки загружаемый файл необходимо разбить на части. Это можно сделать при помощи утилиты split:
<размер_части>— размер каждой части. Например, для 5 МБ укажите5M.<путь_к_файлу>— путь к исходному файлу.<префикс_имени_части>— префикс для имен частей. Например, если указать part, части будут называтьсяpartaa,partabи так далее.
Шаги выполнения multipart-загрузки
Инициализация загрузки
Сначала инициализируйте multipart загрузку, чтобы получить UploadId, необходимый для последующих операций:
Ответ команды будет содержать UploadId. Сохраните его, так как он понадобится для загрузки частей и завершения процесса.
Загрузка частей
Используйте команду upload-part, чтобы загрузить части файла. Для этого нужно указать UploadId, PartNumber, а также файл или часть файла для загрузки. Пример загрузки первой части:
Повторите эту команду для каждой части файла, увеличивая номер части (--part-number) и изменяя --body для каждой последующей загрузки.
Завершение загрузки
После загрузки всех частей выполните команду complete-multipart-upload, передав UploadId и информацию о загруженных частях. Сначала сформируйте JSON-файл с частями загрузки, указывая ETag и номер части:
Затем завершите загрузку:
Отмена загрузки
Если вы хотите отменить загрузку, выполните команду:
Список частей составной загрузки
Чтобы получить список частей во время загрузки, можно использовать команду list-parts:
Подписанные URL (Presigned URL)
Подписанный URL (Presigned URL) позволяет создать временную ссылку для доступа к приватному объекту в S3. Такая ссылка позволяет получить доступ к объекту без авторизации, однако, в отличие от изменения прав доступа (ACL) объекта, presigned URL всегда имеет ограниченный срок действия (максимум — 7 дней).
Генерация presigned URL
Для генерации временной ссылки на объект в S3 используйте команду:
Дополнительно можно указать срок действия ссылки с помощью флага --expires-in, который задает время в секундах (по умолчанию 3600 секунд):
Принцип работы Presigned URL
При создании presigned URL используется стандартный механизм авторизации AWS. Разница заключается в том, что значения, которые обычно передаются в заголовках для авторизации, в presigned URL добавляются как параметры URL. Это позволяет сторонним пользователям открыть ссылку в браузере или другом клиенте без дополнительных настроек. Например, ссылка может выглядеть так: