外部存储

如何更改录制内容的默认存储目标。

外部存储

OpenReplay 会话录制默认存储在你的实例上,但可以将存储目标更改为任何兼容 S3 的对象存储服务,从而实现更高的可扩展性和更低的部署成本。

更改录制内容的存储目标

Section titled 更改录制内容的存储目标

只要兼容 S3,录制内容就可以持久化到任何对象存储目标,这使得 OpenReplay 兼容所有主流公有云服务。以下是为你的录制内容配置不同存储目标的步骤:

你必须在对象存储服务中创建以下存储桶。它们的名称可以不同,但本节后续内容将使用以下引用名称:

  • 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"
  1. 登录你的 OpenReplay 实例并运行 openreplay -e,以更新 s3 部分中以下环境变量:
变量描述
accessKey你的对象存储访问密钥(如果你使用 AWS,则为你的 IAM 访问密钥 ID;在 Google Cloud 上则为你的服务账号 HMAC 密钥
secretKey你的对象存储密钥
endpoint你的对象存储服务的 URL(以 https 开头)(即如果你使用 AWS,请查看 S3 端点列表;在 Google Cloud Storage 上则为 https://storage.googleapis.com
region你的存储桶所在区域(如适用)(即如果你使用 AWS S3,则类似于 us-east-1
assetsBucket资源存储桶名称(即 openreplay-assets
recordingsBucket录制内容存储桶名称(即 openreplay-recordings
sourcemapsBucketsource maps 存储桶名称(即 openreplay-sourcemaps
  1. 使用 :wq 保存并退出,使更改生效

现在,新录制的会话应该会存储到你的新目标/对象存储服务中,并在回放时从中检索。

如果你遇到任何问题,请加入我们的 Slack 或查看我们的论坛,从我们的社区获得帮助。