Как работать с объектным хранилищем 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