Cloudflare R2에 업로드된 파일이 백업에 추가되지 않음: Aws::S3::Errors::Http501Error로 인해 ******* 다운로드 실패

Cloudflare에서 몇 가지 설정을 시도해 보고 있으며, 향후 R2를 계속 사용하려고 생각하고 있습니다. 그래서 백업을 확인하던 중 설치 파일이 포함되지 않았다는 것을 발견했고, 이로 인해 오류가 발생했습니다. 수동으로 백업을 생성할 때에도 트랜잭션 로그에서 동일한 오류가 발생합니다. 로컬에 있는 이미지와 파일은 백업이 되지만, Cloudflare R2에 있는 이미지는 백업되지 않습니다.

오류 코드 예시:

Failed to download original/1X/4b8754c367e54bc5271454a09b8bd4c1a8b882d5.png because Aws::S3::Errors::Http501Error
/var/www/discourse/lib/s3_helper.rb:280:in `rescue in download_file'
/var/www/discourse/lib/s3_helper.rb:277:in `download_file'
/var/www/discourse/lib/file_store/s3_store.rb:338:in `download_file'
/var/www/discourse/lib/backup_restore/backuper.rb:321:in `block in add_remote_uploads_to_archive'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:71:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:71:in `block in find_each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:138:in `block in find_in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:245:in `block in in_batches'
<internal:kernel>:187:in `loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:137:in `find_in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:70:in `find_each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/querying.rb:22:in `find_each'
/var/www/discourse/lib/backup_restore/backuper.rb:315:in `add_remote_uploads_to_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:248:in `create_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:40:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'

제 설정은 다음과 같습니다:

감사합니다.

이는 예상되는 동작이며, S3/R2의 주요 목적은 백업을 하지 않아도 된다는 점에 있습니다. 하지만 모든 S3 이미지를 다운로드하여 백업에 포함시키는 숨겨진 설정이 있습니다.

아, 그런데 DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true 설정이 활성화되어 있네요.

즉, R2가 원래 제안된 방식대로 작동하지 않는 것일 수 있습니다. 제가 테스트를 해서 작동한다고 생각했지만, 이미지를 백업으로 다운로드하거나 복원 과정을 수행하거나 백업 파일을 다운로드해 보는 것은 시도해 보지 않았습니다.

이 문제는 다른 주제에서 제시된 "작동할 수도 있다"는 가설과 모순되는 것으로 보이므로, 해당 다른 주제에 언급하는 것이 적절할 것 같습니다.

이 설정은 활성화되어 있지만, 백업 시 R2에서 이미지를 가져오지 않습니다. 수동 백업을 수행할 때 로그에서 이를 확인할 수 있습니다.

저는 아직 결정하지 못했고, cdn을 유지하고 로컬 스토리지 사용을 고려하고 있습니다. 사실, 의견이 바뀔 경우를 대비하여 이러한 상황이 예상됩니다.

답변해 주셔서 감사합니다.

이 문제를 다시 제기하겠습니다. 하지만 자동 백업이 실행될 때마다 에러 코드로 가득 차버립니다. 백업이 이루어지지 않는다면, 시간을 낭비하지 않도록 S3에서 파일을 요청하지 않는 것이 더 좋다고 생각합니다. 이렇게 하면 불필요한 에러 코드로 파일이 채워지는 것을 막을 수 있습니다.

제 생각에는 모든 이미지가 도난당하는 것을 방지하려고 하기 때문에 다운로드를 허용하지 않는 것 같습니다. R2가 Discourse와 호환되지 않는 또 다른 방식인 것 같습니다.

R2를 꽤 오랫동안 사용해 왔습니다. 전반적으로는 좋은데, 위에서 언급한 것과 같은 몇 가지 문제가 있지만 해결 가능합니다. 시간이 지나면 커뮤니티에서 이 문제를 해결해 나갈 것입니다. 그때까지 행운을 빕니다 :slight_smile:

재미있네요! 저는 당신이 작동하지 않는 것에 대해 불평하는 것만 본 적이 있어요. 제 빠른 테스트에서는 작동하는 것처럼 보였지만, 광범위하게 테스트한 것은 아니에요.

백업 다운로드에 대한 속도 제한이 제 최선의 추측이지만, 그렇다면 오류가 발생하지 않을까 싶어요?

테스트 후 R2를 실행했을 때, R2와 관련된 제 문제들 :clap: :clap: 은 다음과 같았습니다.
S3를 꺼두자 연결이 이상한 R2 연결로 바뀌었습니다 (Docker에서 확인했을 때 본 내용입니다). 그리고 이를 수정하려고 다시 빌드(rebake)했을 때, 사이트의 이미지들이 날리거나 왜곡되는 현상이 발생했습니다. 몇 번의 시도를 거쳐 수정한 후, R2는 업로드에만 사용하고 있습니다. 그래서 아직 이를 완전히 제거하는 방법을 찾지 못했습니다 (혹은 찾지 못한 것 같습니다).
또 하나는 백업을 생성할 때 에러 메시지가 발생한다는 점이었습니다. 이미지가 1만 개나 되는 상황에서 에러 로그를 쓸데없이 가득 채우게 됩니다. 이로 인해 중요한 문제를 놓칠 수도 있습니다. (에러 메시지를 출력하지 않는 것이 더 나을 수 있지만, S3의 데이터가 백업에 포함되지 않는다는 점은 명시되어야 합니다.)
이 외의 문제는 기억나지 않습니다. R2에 있는 파일 백업이 필요하면 winscp를 통해 연결하여 내 컴퓨터로 다운로드할 수 있습니다. 혹시 필요하신 분이 계시다면, 여기에 메모를 남겨두겠습니다 :slight_smile:

갑자기 깨달았는데, S3를 사용하는 사용자는 “업로드 시 백업” 설정을 끄면 에러 메시지를 없앨 수 있겠네요. 왜 전에 이런 생각을 못 했을까요… :rofl::rofl: