외부 스토리지
OpenReplay 세션 녹화는 기본적으로 인스턴스에 저장되지만, 저장 대상을 S3 호환 오브젝트 스토리지 서비스로 변경할 수 있으며, 이를 통해 더 높은 확장성과 낮은 배포 비용을 얻을 수 있습니다.
녹화 스토리지 대상 변경
Section titled 녹화 스토리지 대상 변경녹화 데이터는 S3 호환 오브젝트 스토리지라면 어디에나 보관할 수 있으므로 OpenReplay는 모든 주요 퍼블릭 클라우드 서비스와 호환됩니다. 녹화 데이터의 저장 대상을 다른 곳으로 설정하는 방법은 다음과 같습니다.
필요한 버킷 생성
Section titled 필요한 버킷 생성오브젝트 스토리지 서비스에서 아래 버킷을 생성해야 합니다. 이름은 달라도 되지만, 이 섹션의 나머지 부분에서는 아래 이름을 기준으로 설명합니다.
openreplay-recordings: 녹화 데이터가 보관되는 버킷openreplay-assets: 에셋(CSS, 글꼴 등)이 복사되는 버킷openreplay-sourcemaps: 소스 맵을 저장하는 버킷 (업로드 방법 참조)openreplay-spots: Spot 녹화를 저장하는 버킷
버킷을 생성한 후에는 다음을 진행합니다.
- 위 버킷 각각에 대해 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/*"
}
]
}
- 마지막으로, OpenReplay 백엔드가 파일을 업로드하기 위해 프로그래밍 방식으로 접근할 수 있도록 이 4개 버킷에 대해서만 적절한 액세스 키를 생성합니다. 필요한 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 | 소스 맵 버킷 이름 (예: openreplay-sourcemaps) |
| spotsBucket | Spot 버킷 이름 (예: openreplay-spots) |
:wq를 입력해 저장하고 종료하면 변경 사항이 적용됩니다
이제 새로 녹화되는 세션은 새 대상 오브젝트 스토리지 서비스에 저장되고, 재생할 때도 그곳에서 불러옵니다.
궁금한 점이 있으신가요?
Section titled 궁금한 점이 있으신가요?문제가 발생하면 Slack에 참여하여 커뮤니티의 도움을 받으세요.