외부 스토리지

녹화 데이터의 기본 스토리지 대상을 변경하는 방법을 설명합니다.

외부 스토리지

OpenReplay 세션 녹화는 기본적으로 인스턴스에 저장되지만, 저장 대상을 S3 호환 오브젝트 스토리지 서비스로 변경할 수 있으며, 이를 통해 더 높은 확장성과 낮은 배포 비용을 얻을 수 있습니다.

녹화 스토리지 대상 변경

Section titled 녹화 스토리지 대상 변경

녹화 데이터는 S3 호환 오브젝트 스토리지라면 어디에나 보관할 수 있으므로 OpenReplay는 모든 주요 퍼블릭 클라우드 서비스와 호환됩니다. 녹화 데이터의 저장 대상을 다른 곳으로 설정하는 방법은 다음과 같습니다.

오브젝트 스토리지 서비스에서 아래 버킷을 생성해야 합니다. 이름은 달라도 되지만, 이 섹션의 나머지 부분에서는 아래 이름을 기준으로 설명합니다.

  • openreplay-recordings: 녹화 데이터가 보관되는 버킷
  • openreplay-assets: 에셋(CSS, 글꼴 등)이 복사되는 버킷
  • openreplay-sourcemaps: 소스 맵을 저장하는 버킷 (업로드 방법 참조)
  • 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. 마지막으로, OpenReplay 백엔드가 파일을 업로드하기 위해 프로그래밍 방식으로 접근할 수 있도록 이 4개 버킷에 대해서만 적절한 액세스 키를 생성합니다. 필요한 S3 권한은 다음과 같습니다.
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:ListBucket",
"s3:PutObjectTagging",
"s3:GetBucketLocation"

백엔드 서비스 업데이트

Section titled 백엔드 서비스 업데이트
  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)
sourcemapsBucket소스 맵 버킷 이름 (예: openreplay-sourcemaps)
spotsBucketSpot 버킷 이름 (예: openreplay-spots)
  1. :wq를 입력해 저장하고 종료하면 변경 사항이 적용됩니다

이제 새로 녹화되는 세션은 새 대상 오브젝트 스토리지 서비스에 저장되고, 재생할 때도 그곳에서 불러옵니다.

궁금한 점이 있으신가요?

Section titled 궁금한 점이 있으신가요?

문제가 발생하면 Slack에 참여하여 커뮤니티의 도움을 받으세요.