Перейти к содержанию

Добавление S3 хранилища

В этой статье мы будем использовать S3FS для локального монтирования облачных сервисов хранения на Ubuntu. Их локальное монтирование позволит нам взаимодействовать с облачными провайдерами как с локальной файловой системой.

Note

S3FS — это решение на основе FUSE (файловая система в пользовательском пространстве), используемое для монтирования Amazon S3 или совместимых решений для хранения данных. Как упоминалось выше, мы можем использовать системные команды с этим диском так же, как с другим жестким диском в системе. В смонтированных файловых системах s3fs мы можем просто использовать cp, mv и ls — базовые команды Unix, аналогичные выполняемым на локально подключенных дисках.

Обновление пакетов

Для начала, обновим систему. Затем проверим и удалим существующие пакеты s3fs или fuse.

sudo apt-get update
sudo apt-get remove fuse

Установите зависимости

Далее установим зависимости для fuse

sudo apt-get install build-essential libcurl4-openssl-dev libxml2-dev mime-support

Загрузим и скомпилируем последнюю версию S3FS

Сейчас загрузим и скомпилируем последнию версию s3fs c GitHub. Версия в статье 1.74. После скачивания надо распаковать архив и скомпилировать исходный код в системе.

sudo apt install s3fs

Настройка ключа доступа

Для настройки s3fs нам потребуется ключ доступа и секретный ключ вашей учетной записи S3. Вы можете получить доступ к этим ключам из панели управления вашей учетной записи. Получив эти ключи, создайте файл, назвав его pwd-s3fs.

echo AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
### Примечание. Измените AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY на ваши фактические значения ключей.
После создания файла паролей мы изменим права доступа к файлу из соображений безопасности.
chmod 600 ${HOME}/.passwd-s3fs

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

Наконец, мы можем смонтировать корзину s3, используя следующий набор команд. В этом примере мы используем имя корзины s3 как  test-bucket и точку монтирования как  /s3mnt.

mkdir /tmp/cache /s3mnt
chmod 777 /tmp/cache /s3mnt
s3fs -o use_cache=/tmp/cache mybucket /s3mnt -o passwd_file=${HOME}/.passwd-s3fs

Как только это будет успешно выполнено, вы сможете получить доступ ко всем файлам в тестовом сегменте, просто изменив каталоги на /s3mnt.

Подключение для других S3

Подключение других операторов хранилищ S3 несколько отличается от Amazon. нужно вручную указать конечную точку. Узнать её можно на странице конфигурации оператора.

s3fs test-bucket /s3mnt -o passwd_file=/etc/pwd-s3fs -o url=https://url

Как размонтировать

Чтобы размонтировать папки, просто сделайте следующее: 

umount -l /tmp/cache
umount -l /s3mnt

Советы

Если вы используете S3FS для веб-приложения, вам необходимо разрешить apache, www-data или … (пользователь который запускает веб-сервер) доступ к смонтированному S3. Добавьте параметр allow_other, чтобы заархивировать это, поэтому команда будет

s3fs -o allow_other,use_cache=/tmp/cache mybucket /s3mnt

В большинстве случаев вам нужно, чтобы S3 монтировался автоматически после каждой перезагрузки. Итак, добавьте строку ниже в /etc/fstab. Обратите внимание, что fstab запускается пользователем root , поэтому вам необходимо скопировать .passwd-s3fs в корневой домашний каталог, если его там нет (или вы можете использовать /etc/passwd-s3fs для общесистемной конфигурации)

s3fs#mybucket /s3mnt fuse allow_other,use_cache=/tmp/cache 0 0

Если у вас есть более 1 корзины для подключения к одной и той же системе, вам нужно будет использовать сценарий запуска вместо fstab, потому что если вы используете fstab, будет смонтирована только 1 корзина. В Ubuntu использование local.rc может быть лучшим выбором для сценария запуска.