Внешнее хранилище

Как изменить назначение хранилища по умолчанию для ваших записей.

Внешнее хранилище

Записи сессий OpenReplay по умолчанию хранятся в вашем экземпляре, но место их хранения можно изменить на любой объектный сервис хранения, совместимый с S3, что обеспечивает большую масштабируемость и снижает затраты на развёртывание.

Изменение места хранения записей

Section titled Изменение места хранения записей

Записи могут сохраняться в любом объектном хранилище, если оно совместимо с S3, что делает OpenReplay совместимым со всеми основными публичными облачными сервисами. Ниже приведены шаги для настройки другого места хранения ваших записей:

Создание необходимых бакетов

Section titled Создание необходимых бакетов

Вы должны создать перечисленные ниже бакеты в вашем объектном сервисе хранения. Их имена могут быть другими, но в остальной части этого раздела мы будем использовать следующие обозначения:

  • openreplay-recordings: где будут сохраняться записи
  • openreplay-assets: куда будут копироваться ресурсы (такие как css и шрифты)
  • openreplay-sourcemaps: для хранения source maps (см. как их загрузить)

После создания бакета:

  1. Включите CORS для каждого из перечисленных выше бакетов. Если вы используете AWS, это находится в разделе ‘Permissions > Cross-origin resource sharing (CORS)’ со следующей конфигурацией:
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
  1. Включите публичный доступ только к бакету openreplay-assets. Этот последний содержит только таблицы стилей, иконки и шрифты, которые необходимы для корректного воспроизведения сессий. Если вы используете AWS, сначала перейдите в ‘Permissions > Block public access (bucket settings)’ и отключите его, затем перейдите в ‘Permissions > Bucket policy’ и используйте следующую конфигурацию:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::openreplay-assets/*"
        }
    ]
}
  1. Наконец, обязательно сгенерируйте соответствующие ключи доступа только к этим 3 бакетам, чтобы бэкенд OpenReplay мог программно обращаться к ним для загрузки файлов. Необходимые разрешения S3:
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:ListBucket",
"s3:PutObjectTagging",
"s3:GetBucketLocation"

Обновление сервисов бэкенда

Section titled Обновление сервисов бэкенда
  1. Войдите в ваш экземпляр OpenReplay и выполните openreplay -e, чтобы обновить указанные ниже переменные окружения в разделе s3:
ПеременнаяОписание
accessKeyКлюч доступа вашего объектного хранилища (ваш идентификатор ключа доступа IAM, если вы используете AWS; в Google Cloud это будет ваш ключ HMAC для сервисного аккаунта)
secretKeyСекретный ключ вашего объектного хранилища
endpointURL (начинающийся с https) вашего объектного сервиса хранения (т.е. проверьте список эндпоинтов S3, если вы используете AWS; в Google Cloud Storage это будет https://storage.googleapis.com)
regionРегион (если применимо) ваших бакетов (т.е. если вы используете AWS S3, это будет что-то вроде us-east-1)
assetsBucketИмя бакета ресурсов (т.е. openreplay-assets)
recordingsBucketИмя бакета записей (т.е. openreplay-recordings)
sourcemapsBucketИмя бакета source maps (т.е. openreplay-sourcemaps)
  1. Сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу

Теперь вновь записываемые сессии должны храниться и извлекаться (при воспроизведении) из вашего нового места хранения/объектного сервиса хранения.

Если вы столкнулись с какими-либо проблемами, присоединяйтесь к нашему Slack или посетите наш Форум и получите помощь от нашего сообщества.