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

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

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

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

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

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

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

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

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

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

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

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

  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. Наконец, убедитесь, что вы сгенерировали соответствующие ключи доступа только к этим 4 бакетам, чтобы бэкенд OpenReplay мог программно обращаться к ним для загрузки файлов. Требуемые разрешения S3:
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:ListBucket",
"s3:PutObjectTagging",
"s3:GetBucketLocation"

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

Section titled Обновление сервисов бэкенда
  1. Войдите в свой экземпляр OpenReplay и выполните openreplay -e, чтобы обновить приведённые ниже переменные окружения в разделе s3:
ПеременнаяОписание
accessKeyКлюч доступа вашего объектного хранилища (ваш ID ключа доступа 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)
spotsBucketИмя бакета для spot (то есть openreplay-spots)
  1. Сохраните и выйдите с помощью :wq, чтобы изменения вступили в силу

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

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