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

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

Установка S3cmd

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

Можно установить пакет S3cmd на сервере c ОС Ubuntu при помощи утилиты управления пакетами apt.

Чтобы использовать 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 используйте команду:

s3cmd --configure

Команда запросит значения параметров и сохранит их в файле .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».

Команда s3cmd --configure сохранит настройки в файле .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

Примечание

Данная команда выводит только бакеты, для которых сервисный аккаунт является владельцем. При таком запросе не учитываются правила доступа к бакету (ACL) и разрешения на действия для ролей (IAM-политики). При этом сервисный аккаунт может загружать и удалять объекты в бакетах, к которым у него есть доступ.

s3cmd mb s3://<имя бакета>

где:

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

где:

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

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

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

где:

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

s3cmd get s3://<имя бакета>/<путь к объекту>/<объект> <путь к файлу>/<имя файла>

где:

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

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

где:

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

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

где:

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

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

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