• Post category:Настройки
  • Запись изменена:25.08.2025

1. Введение

S3 API — API на базе Amazon S3 API, предназначенный для работы с ресурсами объектного хранилища.

С помощью S3 API можно:

  • Просматривать информацию о количестве и объеме контейнеров и объектов в рамках аккаунта;
  • Создавать и удалять контейнеры;
  • Загружать, просматривать, копировать, перемещать, скачивать и удалять объекты в контейнерах;
  • Управлять сегментированной загрузкой объектов;
  • Управлять CORS и т.д.

2. Доступ к S3 API в Selectel

К S3 API возможен только авторизованный доступ.

Для доступа к контейнеру через S3 API у пользователя должна быть роль с доступом к объектному хранилищу.

2.1. Аутентификация

Аутентификация в S3 API происходит с помощью подписи запросов.

Для формирования подписи потребуются ключи доступа, которые можно получить при выдаче S3-ключа пользователю:

  • Access Key ID — значение поля Access key из S3-ключа;
  • Secret Access Key — значение поля Secret key из S3-ключа.

2.2. Как выдать S3-ключ⁠​?

Выдавать S3-ключи (EC2-ключи) можно только сервисным пользователям с ролью с доступом в объектное хранилище.

Выдать S3-ключ сервисному пользователю может только Владелец аккаунта или Администратор пользователей.

Получить S3-ключ самостоятельно сервисный пользователь не может.

Для каждого проекта необходимо создавать отдельный ключ. На один проект можно выпустить несколько ключей.

  1. В панели управления в правом верхнем углу откройте меню (номер аккаунта) и выберите Профиль и настройки.
  2. Перейдите в раздел Управление пользователями → вкладка Сервисные пользователи.
  3. Откройте страницу сервисного пользователя.
  4. В блоке S3 ключи нажмите Добавить ключ.
  5. Введите имя ключа.
  6. Выберите проект, для которого будет работать ключ.
  7. Нажмите Сгенерировать. Будет сгенерировано два значения:
    Access key— Access Key ID, идентификатор ключа;
    Secret key — Secret Access Key, секретный ключ.
  8. Нажмите Скопировать и сохраните ключ — после закрытия окна его нельзя будет просмотреть.

Интеграция S3 хранилища с Р7-Диск на примере Selectel

Более подробно можно ознакомиться с этим на портале Selectel по ссылке.

2.3. Настройка прав на хранилище

На контейнер надо выставить класс «холодное» и установить политики доступа как показано на скриншоте ниже.

Интеграция S3 хранилища с Р7-Диск на примере Selectel-1

3. Доступ к S3 API в VK Cloud

3.1. Создайте бакет, например

Интеграция S3 хранилища c Корпоративным сервером 2024 VK Cloud, Selectel

Дополнительная информация доступна по ссылке.

3.2. Перейдите в созданный бакет и создайте ключ

Интеграция S3 хранилища c Корпоративным сервером 2024 VK Cloud, Selectel

Потребуется сохранить Access Key ID и Secret Key для дальнейшего использования.

4. Реализация переноса текущих данных на примере rclone

4.1. Скачайте и установите rclone, например, командой:

Для deb:

wget https://downloads.rclone.org/v1.70.3/rclone-v1.70.3-linux-amd64.deb
apt-get install ./rclone-v1.70.3-linux-amd64.deb

Для rpm:

wget https://downloads.rclone.org/v1.70.3/rclone-v1.70.3-linux-amd64.rpm
apt-get install ./rclone-v1.70.3-linux-amd64.rpm

4.2. Настройте адресацию к бакету в файле /root/.config/rclone/rclone.conf

Selectel:

[Selectel]
type = s3
provider = Other
access_key_id = *******************************
secret_access_key = *******************************
region = ru-msk
endpoint = https://s3.ru-1.storage.selcloud.ru

VK Cloud:

[vk]
type = s3
provider = Other
access_key_id = *******************************
secret_access_key = *******************************
region = ru-msk
endpoint = https://hb.ru-msk.vkcloud-storage.ru

Для проверки подключения создайте файл в бакете и проверьте командой на сервере наличие файла:

Selectel:

rclone ls Selectel:diskstorage

VK Cloud:

rclone ls vk:test2-forcs24

Где:

  • rclone ls — название_конфигурации_из_конфигурации_rclone.conf:имя_бакета.

4.3. Для переноса данных каталога filestorage:

Selectel:

rclone copy --progress /var/r7-office/filestorage/ Selectel:diskstorage/

VK Cloud:

rclone copy --progress /var/r7-office/filestorage/  vk:test2-forcs24/

4.4. Для синхронизации данных если были сгенерированы еще файлы в момент копирования:

Selectel:

rclone sync --progress /var/r7-office/filestorage/ Selectel:diskstorage/

VK Cloud:

rclone sync --progress /var/r7-office/filestorage/ vk:test2-forcs24/

Примечание: рекомендуется остановить сервисы Корпоративного сервера при финальной синхронизации.

supervisorctl stop all

5. Настройка работы Корпоративного сервера с S3

Для настройки работы Корпоративного сервера 2024 с S3 хранилищем необходимо добавить секцию «s3» с соответствующими параметрами в файлы:

/opt/r7-office/Api/appsettings.json
/opt/r7-office/Processing/appsettings.json

Секция «s3»:

Selectel:

"s3": {
     "key": "*******************************",
     "secret": "****************************",
     "region": "ru-1",
     "bucket": "diskstorage",
      "url": "https://s3.ru-1.storage.selcloud.ru"
   },

VK Cloud:

"s3": {
     "key": "*******************************",
     "secret": "****************************",
     "region": "ru-msk",
     "bucket": "test2-forcs24",
      "url": "https://hb.ru-msk.vkcloud-storage.ru"
   },

Где:

  • key – Access Key ID, идентификатор ключа;
  • secret – Secret Access Key, секретный ключ;
  • region – пул, в котором находится объектное хранилище;
  • bucket – название контейнера, куда будут сохраняться объекты;
  • url – домен S3 API с Path-Style адресацией.

Рекомендуется добавление после секции ConnectionStrings. Пример добавленной секции:

...
"ConnectionStrings": {
    "R7StorageServerUserActions": "Database=cddisk;Username=cddisk;Password=*;Host=localhost;Port=5432;",
    "R7StorageServer": "Database=cddisk;Username=cddisk;Password=*;Host=localhost;Port=5432;",
    "CommunityRepository": "Server=localhost;UserID=root;Password=*;Database=r7-office",
    "Payments": "Database=Payments;Username=cddisk;Password=*;Host=localhost;Port=5432;",
    "GeoNames": "Database=GeoNames;Username=cddisk;Password=*;Host=localhost;Port=5432;"
  },
  "s3": {
     "key": "*******************************",
     "secret": "****************************",
     "region": "ru-1",
     "bucket": "diskstorage",
      "url": "https://s3.ru-1.storage.selcloud.ru"
   },
  "rabbitMq": {
    "host": "localhost",
    "username": "guest",
    "password": "guest",
    "timeout": 10
  },
...

5.1. Перезагрузка сервисов

После внесения изменений в конфигурационные файлы appsettings.json необходимо перезапустить сервисы командой:

supervisorctl restart all

6. Использование

После перезагрузки сервисов созданные и редактируемые файлы на портале Корпоративного сервера 2024 будут храниться в S3 хранилище:

Интеграция S3 хранилища c Корпоративным сервером 2024 VK Cloud, Selectel

В объектном хранилище S3 можно наблюдать появление данных файлов:

Selectel:

Интеграция S3 хранилища c Корпоративным сервером 2024 VK Cloud, Selectel

VK Cloud:

Интеграция S3 хранилища c Корпоративным сервером 2024 VK Cloud, Selectel

Была ли полезна статья?
Позвольте нам стать лучше
Дополнительные материалы