外部存储
OpenReplay 会话录制默认存储在你的实例上,但可以将存储目标更改为任何兼容 S3 的对象存储服务,从而实现更高的可扩展性和更低的部署成本。
更改录制内容的存储目标
Section titled 更改录制内容的存储目标只要兼容 S3,录制内容就可以持久化到任何对象存储目标,这使得 OpenReplay 兼容所有主流公有云服务。以下是为你的录制内容配置不同存储目标的步骤:
创建所需的存储桶
Section titled 创建所需的存储桶你必须在对象存储服务中创建以下存储桶。它们的名称可以不同,但本节后续内容将使用以下引用名称:
openreplay-recordings:用于持久化存储录制内容openreplay-assets:用于复制资源(例如 css 和字体)openreplay-sourcemaps:用于存储 source maps(参见如何上传它们)
创建存储桶后:
- 为上述每个存储桶启用 CORS。如果你使用的是 AWS,则该选项位于 ‘Permissions > Cross-origin resource sharing (CORS)’ 下,使用以下配置:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
- 仅为
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/*"
}
]
}
- 最后,请确保仅为这 3 个存储桶生成相应的访问密钥,以便 OpenReplay 后端能够以编程方式访问它们来上传文件。所需的 S3 权限为:
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:ListBucket",
"s3:PutObjectTagging",
"s3:GetBucketLocation"
更新后端服务
Section titled 更新后端服务- 登录你的 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) |
| sourcemapsBucket | source maps 存储桶名称(即 openreplay-sourcemaps) |
- 使用
:wq保存并退出,使更改生效
现在,新录制的会话应该会存储到你的新目标/对象存储服务中,并在回放时从中检索。