Rails Active Storage와 Cloudflare R2 연동 설정 가이드

Setting up Cloudflare R2 buckets for Active Storage

3줄 요약

  • Rails Active Storage는 S3 호환 서비스와 연동 가능하며, Cloudflare R2도 지원합니다.
  • Cloudflare R2 버킷 생성, CORS 설정, API 토큰 발급 후 Rails `storage.yml`에 S3 서비스로 설정합니다.
  • 엔드포인트, 액세스 키, 시크릿 키, 버킷 이름을 환경 변수 등으로 관리하며 개발/운영 환경에 맞게 설정합니다.

본 문서는 Ruby on Rails 프레임워크의 파일 업로드 및 관리를 위한 Active Storage 기능을 Cloudflare의 객체 스토리지 서비스인 R2와 연동하는 방법에 대해 상세히 설명합니다. Rails Active Storage는 기본적으로 Amazon S3를 비롯한 S3 호환 스토리지 서비스를 지원하며, Cloudflare R2 역시 이러한 호환성을 바탕으로 쉽게 통합할 수 있습니다. 효율적인 파일 관리를 위해 Cloudflare R2를 백엔드 스토리지로 활용하고자 하는 개발자에게 유용한 설정 가이드라인을 제공합니다.

Cloudflare R2와 Rails Active Storage를 연동하기 위한 첫 번째 단계는 Cloudflare 대시보드에서 R2 Object Storage를 활성화하고 사용할 버킷을 생성하는 것입니다. 버킷 생성 시 환경(예: 개발, 운영)을 구분하는 이름을 사용하는 것이 권장됩니다. 또한, 버킷 설정에서 적절한 CORS(Cross-Origin Resource Sharing) 정책을 구성해야 합니다. 특히 파일 업로드를 위해 PUT 메서드와 필요한 헤더(Origin, Content-Type, Content-MD5, Content-Disposition)를 허용하도록 설정해야 합니다. 설정이 완료되면 API 섹션에서 Access Key ID와 Secret Access Key를 포함한 API 토큰을 생성하고 안전하게 보관합니다. 이 정보들은 Rails 애플리케이션이 R2 버킷에 접근하는 데 사용됩니다.

Rails 측 설정은 Active Storage 설치 후 config/storage.yml 파일에 S3 서비스 타입으로 Cloudflare R2 설정을 추가하는 것으로 시작합니다. 이 설정에는 Cloudflare R2에서 발급받은 Endpoint URL, Access Key ID, Secret Access Key, 버킷 이름이 포함되어야 합니다. 민감한 정보인 Access Key와 Secret Access Key는 보안을 위해 환경 변수나 Rails Credentials를 통해 관리하는 것이 필수적입니다. 주목할 점은 Amazon S3와 달리 Cloudflare R2의 region 설정은 auto로 지정한다는 것입니다. 일반적으로 개발 및 운영 환경에 따라 다른 R2 버킷이나 설정을 사용하기 위해 storage.yml에 여러 개의 서비스를 정의하고, 각 환경 설정 파일(예: config/environments/development.rb, config/environments/production.rb)에서 해당 환경에 맞는 Active Storage 서비스를 지정합니다. 이러한 설정을 통해 Rails 애플리케이션은 Cloudflare R2를 백엔드로 사용하여 파일 업로드 및 관리를 수행하게 됩니다.

결론적으로, Rails Active Storage와 Cloudflare R2의 연동은 R2의 S3 호환성과 Rails의 유연한 스토리지 설정 덕분에 비교적 간단하게 구현할 수 있습니다. Cloudflare 대시보드에서의 버킷 및 API 설정과 Rails 애플리케이션의 `storage.yml` 및 환경별 설정 파일 구성을 통해 안정적이고 효율적인 파일 스토리지 솔루션을 구축할 수 있습니다. 이 가이드는 기본적인 연동 절차를 포함하며, 개발자는 이를 바탕으로 자신의 애플리케이션 요구사항에 맞게 설정을 더욱 세분화할 수 있습니다.