База знаний

Как работать с объектным хранилищем S3 из консоли

Подключиться к хранилищу S3 можно из консольного клиента. В этой статье будут рассмотрены примеры подключения и настройки клиентов s3cmd, s5cmd и AWS CLI. С небольшими изменениями указанные настройки и методы могут быть применены для любого консольного клиента S3.

Подключение и конфигурирование консольного клиента

Наиболее сложной задачей является задание начальной конфигурации консольного клиента S3 для работы с хранилищем CLO. Для разных клиентов могут использоваться различные методы настройки — создание файла конфигурации, установка переменных окружения, передача параметров подключения через аргументы командной строки, или комбинация этих способов.

Все необходимые параметры для подключения консольного клиента вы можете получить в Личном кабинете (Хранилище S3 → Пользователи → Доступы).

Примечание. Обратитесь к документации конкретного клиента S3 для получения подробной справки о настройках параметров подключения.

Подключение клиента s3cmd

Для настройки клиента s3cmd необходимо выполнить команду

s3cmd --configure

Утилита запросит в интерактивном режиме параметры доступа для хранилища S3:

  • Access key — идентификатор ключа
  • Secret key — секретный ключ
  • Default region — регион пользователя (по умолчанию)
  • S3 Endpoint — адрес хранилища (storage.clo.ru)
  • DNS-style bucket+hostname:port template for accessing a bucket — ссылка на бакет (path-style)
  • Encryption password — пароль для шифрования данных в бакете (необязательно)
  • Path to GPG program — путь к программе шифрования данных GPG (необязательно; нужно, если используется шифрование данных)
  • Use HTTPS Protocol — необходимо оставить исходное значение (Yes)
  • HTTP Proxy server name — введите адрес прокси-сервера, если он используется в сетевой конфигурации
  • Test access with supplied credentials — проверьте, что введённая конфигурация позволяет получить доступ к хранилищу.

Те же параметры настройки можно передать в утилиту s3cmd через интерфейс командной строки.

Подключение клиента s5cmd

Для настройки клиента S5cmd необходимо создать конфигурационный файл с ключами доступа к хранилищу, а также изменить некоторые переменные окружения.

Файл ключей доступа создаётся по адресу:

~/.aws/credentials

Создайте файл и введите в него следующие строчки:

[default]
aws_access_key_id = [ваш идентификатор ключа]
aws_secret_access_key = [ваш секретный ключ]

Далее настройте s5cmd для работы с хранилищем S3:

export S3_ENDPOINT_URL="https://storage.clo.ru"

Подключение клиента AWS S3

Запустите утилиту AWS S3 в режиме конфигурирования:

aws configure

Введите данные для доступа к хранилищу S3:

  • AWS Access Key ID — идентификатор ключа
  • AWS Secret Access Key — секретный ключ
  • Default Region Name — регион пользователя (по умолчанию)
  • Default Output Format — формат выходных данных (по умолчанию)

Откройте файл ~/.aws/config и впишите туда строку с указанием адреса хранилища S3:

endpoint_url = https://storage.clo.ru

Примечание. Консольный клиент AWS S3 также использует файл ключей доступа ~/.aws/credentials для получения открытого и секретного ключей доступа к хранилищу. Если вы одновременно используете утилиты s5cmd и AWS S3, они будут работать с единым общим файлом ключей.

Работа с консольными клиентами

Для большинства консольных клиентов основные выполняемые операции с хранилищем S3 отличаются только синтаксисом команд.

Примечание. Имя бакета, требуемое для выполнения команды, можно получить в Личном кабинете (Хранилище S3 → Бакеты → Доступы →ID бакета).

Далее приведены примеры команд для выполнения типичных операций над хранилищем S3 из консоли.

Выгрузка файла в хранилище S3:

  • Для s3cmd:

s3cmd put [путь к локальному файлу/имя файла] s3://[имя бакета]

  • Для s5cmd: 

s5cmd cp [путь к локальному файлу/имя файла] s3://[имя бакета]

  • Для AWS S3:

aws s3 cp [путь к локальному файлу/имя файла] s3://[имя бакета]

Загрузка файла из хранилища S3:

  • Для s3cmd:

s3cmd get s3://[имя бакета]/[имя файла]

  • Для s5cmd: 

s5cmd cp s3://[имя бакета]/[имя файла]

  • Для AWS S3:

aws s3 cp s3://[имя бакета]/[имя файла]

Удаление файла из хранилища S3:

  • Для s3cmd:

s3cmd del s3://[имя бакета]/[имя файла]

  • Для s5cmd: 

s5cmd rm s3://[имя бакета]/[имя файла]

  • Для AWS S3:

aws s3 rm s3://[имя бакета]/[имя файла]

Получение списка файлов, хранящихся в бакете:

  • Для s3cmd:

s3cmd ls s3://[имя бакета]

  • Для s5cmd: 

s5cmd ls s3://[имя бакета]

  • Для AWS S3:

aws s3 ls s3://[имя бакета]

Получение списка бакетов:

  • Для s3cmd:

s3cmd ls

  • Для s5cmd: 

s5cmd ls

  • Для AWS S3:

aws s3 ls

Решение проблемы с SSL-сертификатами

При работе с хранилищем S3 некоторые пользователи могут столкнуться с проблемой использования устаревших сертификатов SSL. Часто эта проблема проявляется при использовании консольного клиента AWS S3. Чтобы решить эту проблему, выполните следующие команды:

wget https://curl.se/ca/cacert.pem
cd /usr/local/aws-cli/v2/[номер вашей версии AWS S3]/dist/awscli/botocore
mv ./cacert.pem ./cacert.pem.old
mv ~/cacert.pem ./cacert.pem

Узнать вашу версию AWS S3 вы можете командой:

aws --version