Объектное хранилище для файлов и загрузок.

S3-совместимое хранилище для проекта: как добавить бакет, какие переменные S3_* получает ваше приложение и как оплачиваются хранение и операции.

2 МИН ЧТЕНИЯ

Объектное хранилище держит файлы вне вашего приложения: загрузки пользователей, сформированные отчёты, медиафайлы, ваши собственные резервные копии. Оно работает с любой библиотекой или инструментом, поддерживающим протокол S3, — AWS SDK, диском s3 в Laravel, django-storages, boto3, rclone и многими другими.

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

Обзор приложения → Сервисы → Объектное хранилище → Добавить хранилище. Задайте имя бакета — строчные латинские буквы, цифры и дефисы, начиная с буквы — и подтвердите. Бакет будет готов через мгновение.

В проекте может быть до 3 бакетов.

Переменные, которые получает приложение

Данные доступа добавляются в переменные проекта автоматически; приложение получает их со следующим развёртыванием:

ПеременнаяЧто это
S3_ENDPOINTадрес хранилища
S3_REGIONрегион, который нужно указать в S3-клиенте
S3_BUCKETимя бакета
S3_KEYключ доступа
S3_SECRETсекретный ключ

Ключ действует только для этого бакета. Второй бакет проекта получает переменные с его именем в начале: <NAME>_S3_ENDPOINT, <NAME>_S3_BUCKET и так далее.

Ваша собственная переменная с тем же именем остаётся на месте — это удобно, если часть приложения должна и дальше использовать другое хранилище. См. Переменные окружения.

Пример: Laravel

В config/filesystems.php направьте диск s3 на эти переменные:

's3' => [
    'driver' => 's3',
    'key' => env('S3_KEY'),
    'secret' => env('S3_SECRET'),
    'region' => env('S3_REGION'),
    'bucket' => env('S3_BUCKET'),
    'endpoint' => env('S3_ENDPOINT'),
    'use_path_style_endpoint' => true,
],

Затем задайте FILESYSTEM_DISK=s3 на вкладке Переменные.

Пример: Node.js

import { S3Client } from '@aws-sdk/client-s3'
 
const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: process.env.S3_REGION,
  credentials: { accessKeyId: process.env.S3_KEY, secretAccessKey: process.env.S3_SECRET },
})

Цена

Цена
Хранение$0.025 за ГБ в месяц
Трафикбесплатно — скачивание из хранилища ничего не стоит
Запись$6 за миллион операций
Чтение$0.50 за миллион операций

Объём хранения измеряется каждый день и усредняется за месяц, поэтому файл, хранившийся полмесяца, стоит половину. Потребление за календарный месяц добавляется к следующему платежу проекта одной строкой; отдельной подписки нет.

Удаление бакета

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

Всё ещё не можете разобраться?

Напишите живому инженеру — медианный ответ менее 3 минут в любое время суток.

Написать в поддержку