Объектное хранилище (S3)

S3-совместимое объектное хранилище для загрузок, статических файлов и бэкапов. При создании аддона s3 автоматически создаётся бакет с публичным чтением под именем default, поэтому файлы можно отдавать сразу, без дополнительной настройки.

Создание

lizard add s3

Первый S3-аддон называется s3, поэтому ${{s3.S3_ENDPOINT}} и подобные команды работают сразу.

Переменные окружения

ПеременнаяОписание
S3_ENDPOINTS3-совместимый URL эндпоинта
S3_DEFAULT_BUCKETИмя автоматически созданного бакета (default)
S3_ACCESS_KEY_IDAccess key
S3_SECRET_ACCESS_KEYSecret key
S3_REGIONРегион

Подключение сервиса

lizard secrets set \
  S3_ENDPOINT='${{s3.S3_ENDPOINT}}' \
  S3_DEFAULT_BUCKET='${{s3.S3_DEFAULT_BUCKET}}' \
  S3_ACCESS_KEY_ID='${{s3.S3_ACCESS_KEY_ID}}' \
  S3_SECRET_ACCESS_KEY='${{s3.S3_SECRET_ACCESS_KEY}}' \
  S3_REGION='${{s3.S3_REGION}}' \
  --service api
lizard redeploy --service api

Использование AWS SDK

Эндпоинт совместим с S3. Используйте path-style адресацию:

import { S3Client } from "@aws-sdk/client-s3";
 
const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: process.env.S3_REGION,
  forcePathStyle: true, // required
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY_ID!,
    secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
  },
});

Публичные файлы

Объекты в любом публичном бакете доступны без аутентификации двумя способами:

  1. Gateway URL (показывается в дашборде):
    https://s3-<region>.onlizard.com/<addonId>/<bucket>/<key>
  2. Platform proxy (хост дашборда, с долгими неизменяемыми заголовками кэша):
    <dashboard-host>/api/s3/<addonId>/public/<bucket>/<key>

Все, что загружено в бакет default, сразу становится публичным по адресу:

<dashboard-host>/api/s3/<addonId>/public/default/<key>

Обзор объектов

Откройте S3-браузер в дашборде (lizard open), чтобы загружать, скачивать и управлять объектами и бакетами.

Изменение ACL бакета (переключение публичный/приватный) пока недоступно в CLI — управляйте ими через дашборд.

Увеличение хранилища

lizard scale --service s3 --storage 16384

См. также