본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Cloudflare R2 Super Slurper

원문 보기 위키 갱신

Super Slurper를 사용하면 다른 클라우드 프로바이더에서 원하는 R2 버킷으로 객체를 빠르고 쉽게 복사할 수 있어요.

출처: 문서

본문

마이그레이션 작업:

  • 소스 버킷의 커스텀 객체 메타데이터를 보존해 R2의 마이그레이션된 객체에 복사해요.
  • 소스 버킷의 객체를 삭제하지 않아요.
  • HTTPS 연결에 TLS 암호화를 사용해 안전하고 비공개적인 객체 전송을 보장해요.

Super Slurper를 사용해야 할 때

마이그레이션할 클라우드 스토리지 버킷이 주로 1 TB 미만의 객체로 구성되어 있다면 Super Slurper를 전략의 일부로 사용하는 것이 좋은 선택이에요. 1 TB보다 큰 객체는 건너뛰므로 별도로 복사해야 해요.

위 기준에 해당하지 않는 마이그레이션 사례에는 rclone 같은 도구를 권장해요.

Super Slurper로 R2에 데이터 마이그레이션하기

  1. Cloudflare dashboard의 R2 data migration 페이지로 이동해요. Data migration으로 이동
  2. Migrate files를 선택해요.
  3. 데이터를 마이그레이션할 소스 클라우드 스토리지 프로바이더를 선택해요.
  4. 소스 버킷 이름과 관련 자격 증명을 입력하고 Next를 선택해요.
  5. R2 버킷 이름과 관련 자격 증명을 입력하고 Next를 선택해요.
  6. 마이그레이션 세부 정보 검토를 마치면 Migrate files를 선택해요.

언제든지 Data Migration 페이지에서 마이그레이션을 선택하면 마이그레이션 작업의 상태를 볼 수 있어요.

소스 버킷 옵션

Bucket sub path (선택 사항)

이 설정은 객체를 복사할 소스 버킷 내의 prefix를 지정해요.

대상 R2 버킷 옵션

Overwrite files?

이 설정은 소스 스토리지 버킷에서 복사되는 객체가 대상 R2 버킷의 기존 객체와 경로가 같을 때 어떻게 할지 결정해요. 두 가지 옵션이 있어요:

  • Overwrite(덮어쓰기, 기본값)
  • Skip(건너뛰기)

지원되는 클라우드 스토리지 프로바이더

Cloudflare는 현재 다음 클라우드 객체 스토리지 프로바이더에서 R2로 데이터를 복사하는 것을 지원해요:

  • Amazon S3
  • Cloudflare R2
  • Google Cloud Storage (GCS)
  • 모든 S3 호환 스토리지 프로바이더

테스트된 S3 호환 스토리지 프로바이더

다음 S3 호환 스토리지 프로바이더는 Super Slurper와 함께 동작하도록 테스트·검증됐어요:

  • Backblaze B2
  • DigitalOcean Spaces
  • Scaleway Object Storage
  • Wasabi Cloud Object Storage

Super Slurper는 모든 S3 호환 스토리지 프로바이더의 전송을 지원해야 하지만, 위에 나열된 것들은 명시적으로 테스트된 것들이에요.

참고

다른 S3 호환 프로바이더를 테스트·검증했나요? Pull request를 열거나 GitHub issue를 만들어요.

스토리지 프로바이더용 자격 증명 만들기

Amazon S3

Amazon S3에서 객체를 복사하려면 Super Slurper에 S3 버킷에 대한 접근 권한이 필요해요. 올바른 권한이 있는 AWS Identity and Access Management(IAM) 사용자 자격 증명이면 무엇이든 쓸 수 있지만, Cloudflare는 좁은 권한 집합을 가진 사용자 만들기를 권장해요.

올바른 권한의 자격 증명을 만들려면:

  1. AWS IAM 계정에 로그인해요.
  2. 다음 형식의 정책을 만들고 접근 권한을 부여할 버킷으로 <BUCKET_NAME>을 바꿔요:
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": ["s3:Get*", "s3:List*"],
			"Resource": ["arn:aws:s3:::<BUCKET_NAME>", "arn:aws:s3:::<BUCKET_NAME>/*"]
		}
	]
}
  1. 새 사용자를 만들고 만든 정책을 그 사용자에게 연결해요.

이제 소스 버킷을 정의할 때 Access Key ID와 Secret Access Key를 모두 사용할 수 있어요.

Google Cloud Storage

Google Cloud Storage(GCS)에서 객체를 복사하려면 Super Slurper에 GCS 버킷에 대한 접근 권한이 필요해요. Google Cloud 사전 정의 Storage Admin 역할을 쓸 수 있지만, Cloudflare는 더 좁은 권한 집합을 가진 커스텀 역할 만들기를 권장해요.

필요한 권한으로 커스텀 역할을 만들려면:

  1. Google Cloud 콘솔에 로그인해요.
  2. IAM & Admin > Roles로 이동해요.
  3. Storage Object Viewer 역할을 찾아 Create role from this role을 선택해요.
  4. 새 역할에 이름을 지어요.
  5. Add permissions을 선택하고 storage.buckets.get 권한을 추가해요.
  6. Create를 선택해요.

커스텀 역할로 자격 증명을 만들려면:

  1. Google Cloud 콘솔에 로그인해요.
  2. IAM & Admin > Service Accounts로 이동해요.
  3. 커스텀 역할로 서비스 계정을 만들어요.
  4. 만든 서비스 계정의 Keys 탭으로 이동해요.
  5. Add Key > Create a new key를 선택하고 JSON 키 파일을 다운로드해요.

이제 Super Slurper를 활성화할 때 이 JSON 키 파일을 사용할 수 있어요.

주의 사항

ETag

정상적인 운영 중에는 R2의 ETag 생성이 S3와 호환되지만, Super Slurper로 객체를 마이그레이션할 때 ETag가 같다는 보장은 없어요. Super Slurper는 성능과 네트워크 사용을 최적화하기 위해 객체를 마이그레이션할 때 사용할 작업을 자율적으로 결정해요. 객체를 여러 부분으로 마이그레이션하기로 선택할 수 있는데, 이는 ETag 계산에 영향을 줘요.

예를 들어 원래 S3에서 단일 PutObject 작업으로 업로드된 320 MiB 객체가 멀티파트 작업을 통해 R2로 마이그레이션될 수 있어요. 이 경우 R2의 ETag는 S3의 ETag와 같지 않아요. 마찬가지로 원래 S3에서 멀티파트 작업으로 업로드된 객체도, Super Slurper가 마이그레이션에 선택한 파트 크기가 원래 업로드 시 파트 크기와 다르면 R2에서 ETag가 달라질 수 있어요.

따라서 마이그레이션 전후 ETag가 일치할 것이라고 기대하는 것은 권장되지 않아요.

아카이브 스토리지 클래스

AWS S3 아카이브 스토리지 클래스로 저장된 객체는 건너뛰므로 별도로 복사해야 해요. 구체적으로는:

  • S3 Glacier 티어(Glacier Instant Retrieval 제외)로 저장된 파일은 건너뛰고 마이그레이션 로그에 기록돼요.
  • S3 Intelligent Tiering으로 저장되고 Deep Archive 티어에 배치된 파일은 건너뛰고 마이그레이션 로그에 기록돼요.

더 알아보기 (Learn more)

  • Sippy — 요청 시점에 객체를 채우는 증분 마이그레이션
  • Migration Strategies — Super Slurper와 Sippy를 조합해 효과적으로 마이그레이션하는 전략