Монтирование S3 бакета в Ubuntu Linux

Оцените статью

В рамках прохождения курса по Cloud.ru есть задача по подключению S3-бакета при помощи программы CyberDuck которая доступна только под Windows и MacOS. Линукс там конечно же не поддеживается и придется как-то выкручиваться.

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

# aptitude install s3fs

Создаем файлик с параметрами авторизации системного пользователя (в домашнем каталоге пользователя).

$ echo "<accessKeyId>:<secretAccessKey>" >.passwd-s3fs
$ chmod 600 ~/.passwd-s3fs

Создаем для теста каталог в /tmp.

$ mkdir /tmp/s3fs

Монтируем каталог хитрым заклинанием (пример взят из selectel, но вполне к любому s3-образному хранилищу применим) вида.

s3fs <наименование_контейнера> <путь_к_каталогу монтирования> -o allow_other -o passwd_file=<путь_файлу_с_данными_авторизации> -o use_path_request_style -o endpoint=<регион> -o url=https://s3.ru-1.storage.selcloud.ru

Естественно, что ничерта с ходу не получилось и будем дебажить (ну как обычно). А заклинание для дебага и ошибки выглядят так.

$ s3fs bucket-5f8cdd /tmp/s3fs -d -f -o passwd_file=/home/chernousov/.passwd-s3fs -o use_path_request_style -o endpoint=ru-central-1 -o url=https://s3.cloud.ru
2025-01-16T03:27:50.999Z [INF] s3fs version 1.93(unknown) : s3fs -d -f -o passwd_file=/home/chernousov/.passwd-s3fs -o use_path_request_style -o endpoint=ru-central-1 -o url=https://s3.cloud.ru bucket-5f8cdd /tmp/s3fs
2025-01-16T03:27:50.999Z [CRT] s3fs_logger.cpp:LowSetLogLevel(239): change debug level from [CRT] to [INF] 
2025-01-16T03:27:50.999Z [INF]     s3fs.cpp:set_mountpoint_attribute(4563): PROC(uid=1000, gid=1000) - MountPoint(uid=1000, gid=1000, mode=40775)
2025-01-16T03:27:51.000Z [INF] curl.cpp:InitMimeType(431): Loaded mime information from /etc/mime.types
2025-01-16T03:27:51.000Z [INF] fdcache_stat.cpp:CheckCacheFileStatTopDir(78): The path to cache top dir is empty, thus not need to check permission.
2025-01-16T03:27:51.001Z [INF] s3fs.cpp:s3fs_init(4287): init v1.93(commit:unknown) with GnuTLS(gcrypt), credential-library(built-in)
2025-01-16T03:27:51.001Z [INF] s3fs.cpp:s3fs_check_service(4431): check services.
2025-01-16T03:27:51.001Z [INF]       curl.cpp:CheckBucket(3673): check a bucket path(/).
2025-01-16T03:27:51.001Z [INF]       curl_util.cpp:prepare_url(257): URL is https://s3.cloud.ru/bucket-5f8cdd/
2025-01-16T03:27:51.001Z [INF]       curl_util.cpp:prepare_url(290): URL changed is https://s3.cloud.ru/bucket-5f8cdd/
2025-01-16T03:27:51.001Z [INF]       curl.cpp:insertV4Headers(2892): computing signature [GET] [/] [] []
2025-01-16T03:27:51.001Z [INF]       curl_util.cpp:url_to_host(334): url is https://s3.cloud.ru
2025-01-16T03:27:51.301Z [ERR] curl.cpp:RequestPerform(2567): HTTP response code 403, returning EPERM. Body Text: <Error><Code>InvalidAccessKeyId</Code><Message>Invalid or unknown access key id</Message></Error>
2025-01-16T03:27:51.301Z [ERR] curl.cpp:CheckBucket(3742): Check bucket failed, S3 response: <Error><Code>InvalidAccessKeyId</Code><Message>Invalid or unknown access key id</Message></Error>
2025-01-16T03:27:51.301Z [CRT] s3fs.cpp:s3fs_check_service(4508): Failed to connect by sigv4, so retry to connect by signature version 2. But you should to review url and endpoint option.
2025-01-16T03:27:51.301Z [INF]       curl.cpp:CheckBucket(3673): check a bucket path(/).
2025-01-16T03:27:51.301Z [INF]       curl_util.cpp:prepare_url(257): URL is https://s3.cloud.ru/bucket-5f8cdd/
2025-01-16T03:27:51.301Z [INF]       curl_util.cpp:prepare_url(290): URL changed is https://s3.cloud.ru/bucket-5f8cdd/
2025-01-16T03:27:51.355Z [INF]       curl.cpp:RequestPerform(2583): HTTP response code 501 was returned, returning ENOTSUP
2025-01-16T03:27:51.355Z [ERR] curl.cpp:CheckBucket(3742): Check bucket failed, S3 response: <Error><Code>NotImplemented</Code><Message>AWS signature V2 not supported</Message></Error>
2025-01-16T03:27:51.355Z [CRT] s3fs.cpp:s3fs_check_service(4530): Failed to check bucket and directory for mount point : Unable to connect(host=https://s3.cloud.ru)
2025-01-16T03:27:51.355Z [ERR] s3fs.cpp:s3fs_exit_fuseloop(4277): Exiting FUSE event loop due to errors

2025-01-16T03:27:51.361Z [INF] s3fs.cpp:s3fs_destroy(4336): destroy

Итого, пошли читать документацию (причем она у них адекватно написана только применительно к AWS и подключению из Python https://cloud.ru/docs/s3e/ug/topics/tools__sdk-python.html). И как я понимаю от селектела нам инструкция подойдет лишь частично и придется информацию дербанить из разных источников.

В итоге, на курсах задал вопрос и мне ответили (о, магия), оказывается надо вот так делать.

Антон, добрый день!
Благодарим за отзыв.

Для s3fs необходимо:
1. сохранить credentials в файле (.passwd-s3fs) в формате: tenant.access_key:secret_key;
2. прописать команду подключения:
# s3fs bucket-name /path/to/mnt/dir -o passwd_file=/path/to/.passwd-s3fs -o url=https://s3.cloud.ru -o use_path_request_style -o endpoint=ru-central-1

Если будут вопросы — обращайтесь!

И вот тут я в документации не нашел за каким там чертом точка ставится и почему у того же селектела все наоборот и что это за магия, но оно работает.

tenant.access_key:secret_key

Ура!!!

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования