Объектное хранилище (S3)
Объектное хранилище Aral Cloud — это S3-совместимое хранилище для файлов, резервных копий, медиа и любых других неструктурированных данных. Вы создаёте бакеты, получаете отдельные учётные данные для каждого бакета и работаете с ними через AWS CLI, любой S3 SDK или встроенный обозреватель объектов в консоли.
Найти его можно в разделе Storage → S3 в консоли.
S3-бакет и ключи доступа0:36Бакеты
Бакет — это именованный контейнер для ваших объектов. Каждый бакет находится в определённой зоне и получает собственные ограниченные учётные данные — ключ доступа (access key) и секретный ключ (secret key), которые работают только с этим одним бакетом и ни с чем другим.
Создание бакета
- Откройте Storage → S3 и нажмите Create bucket.
- Выберите зону — географическое расположение, где хранятся данные.
- Введите имя. Имя должно содержать от 3 до 63 символов: строчные буквы, цифры или дефисы, и не может начинаться или заканчиваться дефисом (безопасное для S3/DNS именование).
- При необходимости задайте квоту в ГБ. Оставьте
0, чтобы не ограничивать. - Нажмите Create.
После создания бакета консоль покажет его endpoint, access key и secret key.
WARNING
Секретный ключ показывается только один раз — сразу после создания. Скопируйте его и сохраните в надёжном месте. Если вы его потеряете, восстановить его нельзя — придётся сменить учётные данные (rotate), чтобы получить новую пару.
В списке бакетов для каждого показаны его endpoint, зона, использованный объём (относительно квоты), количество объектов, режим доступа (публичный/приватный), ориентировочная месячная стоимость и дата создания.
Учётные данные
У каждого бакета есть собственные access key и secret key, ограниченные так, что они имеют доступ только к этому одному бакету. Откройте меню бакета, чтобы:
- Copy endpoint — скопировать хост S3-endpoint, на который настраивается клиент.
- View credentials — получить access key и secret key бакета.
Смена учётных данных
Если ключ скомпрометирован или вы просто хотите его обновить, выберите Rotate credentials. Будут сгенерированы новые access key и secret key, новый секрет показывается один раз.
WARNING
Смена немедленно отзывает старые учётные данные. Любое приложение, всё ещё использующее прежние ключи, перестанет работать, пока вы не обновите его новыми.
Публичный или приватный
По умолчанию бакет приватный — читать его объекты могут только запросы, подписанные учётными данными бакета.
Переключите Make public, чтобы разрешить анонимный доступ на чтение (объекты можно скачивать и просматривать без учётных данных). Нажмите Make private, чтобы снова отключить это.
TIP
Используйте публичные бакеты для ресурсов, которые вы хотите отдавать напрямую, например изображений или статических файлов для скачивания. Всё остальное держите приватным.
Удаление бакета
Удаление бакета из его меню очищает его, удаляет объекты и отзывает учётные данные, а затем удаляет сам бакет. Это действие необратимо.
Обозреватель объектов
Нажмите на бакет, чтобы открыть встроенный обозреватель. Отсюда можно управлять объектами без каких-либо внешних инструментов:
- Просмотр — объекты и папки отображаются для текущего пути, с «хлебными крошками» для навигации. Папки формируются из символа
/в ключах объектов. Большие бакеты подгружаются кнопкой Load more. - Загрузка — нажмите Upload или перетащите файлы. Загрузки идут напрямую в хранилище через кратковременный presigned PUT URL, поэтому ваши файлы не проходят через бэкенд консоли.
- Скачивание — открывает объект по ограниченному по времени presigned GET URL.
- Новая папка — создаёт папку (нулевой по размеру маркер) в текущем пути.
- Удаление — удаляет отдельный объект.
TIP
Presigned-ссылки ограничены по времени. Если срок ссылки истёк, сгенерируйте новую (переоткройте обозреватель или снова нажмите Download).
Использование с AWS CLI и SDK
Поскольку сервис поддерживает S3 API, подойдёт любой S3-совместимый инструмент — нужно лишь указать endpoint вашего бакета и использовать его access key и secret key. Зона бакета является его регионом.
Настройте профиль в AWS CLI:
aws configure --profile aral
# AWS Access Key ID: <access-key-бакета>
# AWS Secret Access Key: <secret-key-бакета>
# Default region name: <зона-бакета>
# Default output format: jsonЗатем передавайте endpoint бакета через --endpoint-url:
# Список объектов
aws --profile aral --endpoint-url https://<endpoint-бакета> \
s3 ls s3://my-bucket/
# Загрузка файла
aws --profile aral --endpoint-url https://<endpoint-бакета> \
s3 cp ./photo.jpg s3://my-bucket/images/photo.jpg
# Скачивание файла
aws --profile aral --endpoint-url https://<endpoint-бакета> \
s3 cp s3://my-bucket/images/photo.jpg ./photo.jpgЛюбой S3 SDK работает аналогично — задайте endpoint, регион, access key и secret key. Например, с SDK boto3 для Python:
import boto3
s3 = boto3.client(
"s3",
endpoint_url="https://<endpoint-бакета>",
aws_access_key_id="<access-key-бакета>",
aws_secret_access_key="<secret-key-бакета>",
region_name="<зона-бакета>",
)
s3.upload_file("photo.jpg", "my-bucket", "images/photo.jpg")WARNING
Никогда не вписывайте секретный ключ в исходный код и не коммитьте его в репозиторий. Загружайте его из переменной окружения или менеджера секретов.
TIP
Управлять бакетами и объектами можно и из терминала с помощью команд aral s3. См. руководство по CLI.