복원 후(S3 업로드를 비활성화하는 것이 핵심이었습니다), 게시물 내 첨부 파일에 대한 모든 링크가 깨졌습니다(404 오류). 포럼을 검색해 보았지만 해결책을 찾을 수 없어 누군가 올바른 방향으로 안내해 주기를 바랍니다.
저에게는 두 가지 옵션이 있습니다.
게시물에 내장된 첨부 파일로 연결되는 이 깨진 short-url 링크를 수정할 수 있을까요? (깨진 링크는 모두 게시물 내 첨부 파일에 대한 것이며, 내장된 이미지는 정상적으로 렌더링되고, 다른 내부 링크도 정상 작동합니다).
예를 들어, 포럼 게시물에서 첨부 파일의 URL은 https://XYZ.com/uploads/short-url/phu1HOLvkE8LWpkKYfnMPSWsvHh.zip으로 표시됩니다. 게시물에서 첨부 파일 링크를 클릭할 때(404로 이어짐) 로그에서 확인되는 내용은 다음과 같습니다.
Message (5 copies reported)
Failed to process hijacked response correctly : Errno::ENOENT : No such file or directory @ rb_sysopen - /XXXXX.s3.dualstack.us-east-1.amazonaws.com/optimized/1X/46728e07f9819907d1b18387bf02ea7fc25c7981_2_32x32.ico
Backtrace
/var/www/discourse/app/controllers/static_controller.rb:160:in read' /var/www/discourse/app/controllers/static_controller.rb:160:in block (2 levels) in favicon’
/var/www/discourse/lib/distributed_memoizer.rb:16:in block in memoize' /var/www/discourse/lib/distributed_mutex.rb:33:in block in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:29:in synchronize' /var/www/discourse/lib/distributed_mutex.rb:29:in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:14:in synchronize' /var/www/discourse/lib/distributed_memoizer.rb:12:in memoize’
/var/www/discourse/app/controllers/static_controller.rb:138:in block in favicon' /var/www/discourse/lib/hijack.rb:56:in instance_eval’
백업에서 서버를 복원할 때 S3 업로드 옵션을 비활성화한 후에도 이 short-url 링크를 수정할 수 있는 방법이 있기를 정말로 희망합니다. 게시물 재베이킹(re-bake)은 문제를 해결하지 못했습니다.
만약 어떤 이유로든 이것이 해결 불가능한 사각지대이고 일괄적으로 수정할 수 없다면, 현재 S3 클라우드에 수천 개의 고아(orphaned) 첨부 파일이 남아 있습니다. 이들을 정리하고 공간을 확보할 수 있는 방법이 있을까요? Discourse가 S3 업로드 버킷을 스캔하여 모든 고아 자산(orphaned assets)을 삭제할 수 있는 방법이 있을까요?
그렇다고 생각합니다. 다만, discourse와 rails에 익숙한 사람이 작성해야 할 것 같습니다. 질문자님의 문제에 대한 기존 솔루션은 제가 알기로는 없습니다. S3 버킷 간 이동에 관한 몇 가지 주제들이 힌트를 줄 수 있을지 모르지만, 질문자님의 특정 문제는 이전에 해결된 적이 없다고 생각합니다.
한 번 시도해 보겠지만, 다른 한편으로 이 기능을 활성화했을 때 복원이 깨지는 문제가 있었습니다(제 다른 토픽 참고). 제이(Jay)의 도움으로 업로드를 비활성화하는 방법을 찾아내야 겨우 복원할 수 있었습니다. 이 옵션을 활성화한 상태에서 서버를 성공적으로 복원해 보신 적이 있으신가요?