Подключение через S3cmd

S3cmd — интерфейс командной строки для работы с сервисами, поддерживающими HTTP API Amazon S3.

Утилиту S3cmd можно установить на сервер с ОС Ubuntu, CentOS, macOS, Windows и т.д. Полный список ОС, дистрибутивы и инструкции по их установке см. в официальной документации S3cmd.

Вы можете создать/удалить бакет, загрузить/скачать/удалить объекты, настроить доступ к объектам и бакетам и т.д. Для этого:

  1. Установите S3cmd.
  2. Настройте S3cmd.
  3. Выполните нужные команды в S3cmd.

Установка S3cmd

Для установки S3cmd воспользуйтесь инструкцией в репозитории проекта.

Чтобы использовать S3cmd на сервере:

  1. При необходимости закажите сервер c ОС Ubuntu и публичным IP-адресом.
  2. Подключитесь к серверу.
  3. Введите команду bash и нажмите Enter для запуска оболочки bash.
  4. Обновите пакет apt до последней версии:

    sudo apt update && sudo apt -y upgrade
  5. Установите на сервер S3cmd при помощи утилиты apt:

    sudo apt install python3-dateutil s3cmd

Настройка S3cmd

Чтобы настроить S3cmd:

  1. Создайте статические ключи для Объектного хранилища S3.
  2. На сервере с установленной утилитой S3cmd выполните команду:
    s3cmd --configure
  3. Команда запросит значения параметров и сохранит их в файле .s3cfg:
    • Access Key — значение Access key, полученное при подключении к Объектному хранилищу S3 через API;
    • Secret Key — значение Secret key, полученное при подключении к Объектному хранилищу S3 через API;
    • Default Region — зона доступности, в которой расположено Объектное хранилище S3. Укажите dc1 для зоны AZ0 или dc3 для зоны AZ1;
    • S3 Endpoint — адрес Endpoint без https://:
      • api.s3.dp.t1.cloud — для Объектного хранилища S3 AZ0;
      • api.s3.az1.t1.cloud — для Объектного хранилища S3 AZ1;
    • DNS-style bucket+hostname:port template for accessing a bucket — %(bucket)s.<адрес Endpoint без https://>. Например, %(bucket)s.api.s3.az1.t1.cloud;
    • значения остальных параметров оставьте без изменений.

Программа попытается установить соединение с Объектным хранилищем S3 и получить список бакетов. В случае успеха на экране появится сообщение «Success».

Настройки сохраняются в файле .s3cfg в формате:

[default] access_key = DXJREYL6OIFFI0BGTVMJ secret_key = vD4Wrn3SgJQcfo0HsNIz1GWyVHWFpOCRiI5UCFBf
bucket_location = dc3 host_base = api.s3.az1.t1.cloud host_bucket = %(bucket)s.api.s3.az1.t1.cloud

При необходимости вы можете изменить значения параметров в файле .s3cfg с помощью текстового редактора GNU nano:

nano .s3cfg

Основные команды и правила использования текстового редактора GNU nano см. в официальной документации.

Синтаксис команд S3cmd

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

В командной строке S3cmd можно выполнить следующие команды:

s3cmd ls
s3cmd ls s3://<имя бакета>/<путь к объекту>/

где:

  • <имя бакета> — название бакета;

  • <путь к объекту> — путь к объекту в бакете. Например, document/images. Указывается, если нужно посмотреть содержимое папки бакета.
s3cmd mb s3://<имя бакета>

где:

  • <имя бакета> — название создаваемого бакета.
s3cmd put <путь к файлу>/<имя файла> s3://<имя бакета>/<путь к объекту>/<объект>

где:

  • <путь к файлу> — локальный путь к файлу на сервере. Например, files/photos/;
  • <имя файла> — название загружаемого файла с расширением. Например, photo.png;
  • <имя бакета> — название бакета, в который загружается объект;

  • <путь к объекту> — путь к объекту в бакете. Например, document/images. Если объект загружается в корень бакета, то данный параметр не указывается.
    Если папки, указанные в <путь к объекту>, ещё не созданы, они создадутся автоматически при загрузке объекта в бакет;

  • <объект> — название объекта с расширением. Например, image1.png. Если параметр <объект> не указан, то сохранится исходное название файла.
s3cmd get s3://<имя бакета>/<путь к объекту>/<объект> <путь к файлу>/<имя файла>

где:

  • <имя бакета> — название бакета, в котором находится объект для скачивания;

  • <путь к объекту> — путь к объекту в бакете. Например, document/images. Если объект находится в корне бакета, то данный параметр не указывается;
  • <объект> — название объекта с расширением. Например, image1.png;
  • <путь к файлу> — локальный путь, по которому объект сохранится на сервера. Например, /files/photos/;
  • <имя файла> — новое название для скачиваемого объекта. Например, new_image.png. Объект не сохранится, если по пути, указанному в параметре <путь к файлу>, уже существует файл с названием скачиваемого объекта.
    Параметр <имя файла> не указывается, если не нужно переименовывать объект.
s3cmd rm s3://<имя бакета>/<путь к объекту>/<объект>

где:

  • <имя бакета> — название бакета;

  • <путь к объекту> — путь к объекту в бакете. Например, document/images. Если объект находится в корне бакета, то данный параметр не указывается;
  • <объект> — название объекта с расширением. Например, image1.png. Если параметр <объект> не указан, то удалятся все объекты по пути, указанному в параметре <путь к объекту>.
s3cmd rm s3://<имя бакета> --recursive --force

где:

  • <имя бакета> — название бакета, в котором нужно удалить все объекты.
s3cmd rb s3://<имя бакета> --recursive --force

где:

  • <имя бакета> — название удаляемого бакета.

    Важно

    Бакет удалится со всем содержимым.

Полный список команд см. в официальной документации S3cmd.

Мы ответили на ваш вопрос?