Telegram
+998 (71) 205-80-00

Объектное S3-хранилище в serverplus

Опубликовано: 25.07.26
Поделиться

Объектное хранилище — это место для файлов, к которым обращаются по HTTP, а не как к диску. Вы кладёте объекты (файлы) в «бакеты» (buckets), и каждый объект доступен по своему ключу. У serverplus оно S3-совместимое, поэтому работает со всеми привычными инструментами: aws-cli, rclone, boto3 и другими SDK.

Когда использовать

  • Бэкапы и архивы — дампы БД, снимки, логи; хранятся отдельно от серверов.
  • Медиа и загрузки пользователей — картинки, видео, документы веб-приложения.
  • Статика и раздача файлов — ассеты сайта, дистрибутивы, отчёты.
  • Обмен данными между сервисами и большими объёмами, которые неудобно держать на диске сервера.

Если же нужна файловая система, куда пишет приложение как на локальный диск, — это том (Cinder), а не объектное хранилище. Объектное — про «положил/забрал файл по ключу».

1. Эндпоинт, бакет и ключи

Единый адрес для подключения (совместим с Amazon S3, поддерживает стандартный S3 API):

https://object-store.serverplus.uz

Создать бакет: в панели cloud.serverplus.uz откройте раздел «Объектное хранилище» → «Создать бакет», задайте уникальное имя и тип доступа — приватный (для служебных данных) или публичный. После создания бакет доступен через S3 API.

Получить ключи: раздел «Доступ» → «Учётные данные S3/EC2» → создайте пару ACCESS_KEY + SECRET_KEY. Они используются для подключения через API, CLI и приложения.

Ключи S3 — это доступ к вашим файлам. Не размещайте SECRET_KEY в публичном коде, храните его как пароль, заводите отдельные ключи для разных сервисов и отзывайте ненужные. Для служебных данных используйте приватные бакеты.

2. Настройка aws-cli

aws configure
# AWS Access Key ID:     <access key>
# AWS Secret Access Key: <secret>
# Default region name:   us-east-1
# Default output format: json

# path-style addressing for S3-compatible storage
aws configure set default.s3.addressing_style path

Чтобы не повторять адрес эндпоинта, удобно сделать псевдоним:

alias s3='aws --endpoint-url https://object-store.serverplus.uz s3'

3. Базовые операции

s3 mb s3://my-bucket                 # create a bucket
s3 cp report.pdf s3://my-bucket/     # upload a file
s3 sync ./site s3://my-bucket/site/  # sync a directory
s3 ls s3://my-bucket/                # list objects
s3 cp s3://my-bucket/report.pdf .    # download
s3 rm s3://my-bucket/report.pdf      # delete

4. Из кода: Python (boto3)

import boto3

s3 = boto3.client(
    "s3",
    endpoint_url="https://object-store.serverplus.uz",
    aws_access_key_id="<access key>",
    aws_secret_access_key="<secret>",
    region_name="us-east-1",
)

s3.upload_file("photo.jpg", "my-bucket", "images/photo.jpg")

for obj in s3.list_objects_v2(Bucket="my-bucket").get("Contents", []):
    print(obj["Key"], obj["Size"])

5. rclone: синхронизация и монтирование

rclone удобен для регулярной синхронизации и даже монтирования бакета как папки. Конфиг ~/.config/rclone/rclone.conf:

[sp]
type = s3
provider = Other
access_key_id = <access key>
secret_access_key = <secret>
endpoint = https://object-store.serverplus.uz
rclone sync ./data sp:my-bucket/data     # sync
rclone ls sp:my-bucket                    # list
rclone mount sp:my-bucket /mnt/s3 &        # mount as a folder

6. Версионирование и жизненный цикл

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

# enable bucket versioning
aws --endpoint-url https://object-store.serverplus.uz \
  s3api put-bucket-versioning --bucket my-bucket \
  --versioning-configuration Status=Enabled
  • Версионирование хранит прежние версии объектов — можно откатить перезапись или удаление.
  • Lifecycle-правила автоматически удаляют или архивируют объекты старше N дней — удобно для логов и бэкапов.

7. Большие файлы

Крупные объекты aws-cli и rclone загружают частями (multipart) автоматически — это надёжнее: при обрыве докачивается только неудавшаяся часть. Отдельная настройка обычно не нужна.

8. Публичный доступ и временные ссылки

По умолчанию объекты приватны. Чтобы дать доступ к файлу, не открывая бакет наружу, используйте presigned URL — временную подписанную ссылку:

s3 presign s3://my-bucket/report.pdf --expires-in 3600
# returns a link valid for 1 hour

Не делайте бакет публичным без необходимости. Публичный доступ уместен для статики сайта, но для приватных файлов используйте временные ссылки, а не «открыть всем».

9. Типичные сценарии

  • Бэкапы: дампы БД и архивы по расписанию (см. статью «Стратегия резервного копирования»).
  • Хранилище загрузок приложения: картинки и файлы пользователей — сервер не растёт, файлы отдаются по ссылкам.
  • Раздача статики: ассеты и дистрибутивы, при необходимости — за CDN.
  • Перенос больших объёмов между серверами (быстрее прямого копирования).

Безопасность

  • Отдельные ключи и минимум прав. Каждому приложению — свои S3-ключи; ненужные отзывайте, периодически ротируйте.
  • Приватность по умолчанию. Публичный доступ — только осознанно; для временного доступа — presigned URL.
  • HTTPS и шифрование. Работайте только через https-эндпоинт; чувствительные данные шифруйте до загрузки.
  • Версионирование как защита от случайного и злонамеренного удаления.

Частые вопросы

Ошибка SignatureDoesNotMatch. Обычно неверный secret, разошлись часы на клиенте или указан не тот эндпоинт/регион. Проверьте ключи, время и адрес.

Access Denied при обращении к бакету. Либо ключи не от того проекта, либо у них нет прав на этот бакет. Проверьте, каким ключом обращаетесь, и политику доступа.

Клиент не находит бакет / странные ошибки адресации. Включите path-style: aws configure set default.s3.addressing_style path (или соответствующую опцию в SDK/rclone).

Какой адрес эндпоинта у serverplus? https://object-store.serverplus.uz — единый S3-совместимый эндпоинт. Его вы передаёте клиенту как --endpoint-url (или в поле endpoint у SDK/rclone).

Рекомендуем
Подберём лучшее решение под ваш проект
Заполните данные и с вами свяжется менеджер для подтверждения
Номер тех. поддержки
+998 (71) 205-80-00
Email для связи
info@serverplus.uz
Часы работы
Как вам удобнее получить консультацию?
Что вас интересует? (необязательно)
Подпишитесь на нашу рассылку

Будьте одними из первых, кто узнает новости из сферы хостингов