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

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

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

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

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

```shell
sudo apt-get update
sudo apt-get remove fuse
```

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

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

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

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

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

```shell
sudo apt install s3fs
```

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

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

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

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

Наконец, мы можем смонтировать корзину s3, используя следующий набор команд. В этом примере мы используем имя корзины s3 как  `test-bucket` и точку монтирования как  `/s3mnt`.
```shell
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. нужно вручную указать конечную точку. Узнать её можно на странице конфигурации оператора.

```shell
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`, чтобы заархивировать это, поэтому команда будет  
```shell
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 может быть лучшим выбором для сценария запуска.