Discourse의 Amazon S3 저장소 지원에 대한 문의

Discourse의 Amazon S3 저장소 지원과 관련된 기술적 문제를 문의드립니다.

2013년으로 거슬러 올라가는 포럼 게시글에서 이미 Discourse의 S3 지원에 대해 논의되고 있었다는 사실을 알게 되었습니다. 또한 CDN 오프로딩(Offloading)과 관련된 몇 가지 스레드도 찾았지만, 이 주제에 대한 자세한 정보는 많지 않은 것 같습니다.

저는 직접 Discourse 포럼을 구축했으며, 영상 업로드 기능을 활성화하는 데 매우 열의를 가지고 있습니다. 많은 아이디어를 생각해 냈지만, 프로그래머가 아니기 때문에 이를 현실화하는 것이 어려웠습니다. 저는 항상 다른 사람들의 도움을 받아 조금씩 진전을 이루어 왔습니다.

Discourse 자체는 작은 영상 파일의 업로드를 지원하며, 저는 이미 해당 기능을 활성화해 두었습니다. 그러나 Discourse의 아키텍처는 영상 업로드를 효율적으로 처리하는 데는 적합하지 않습니다. 많은 조사를 거쳐, Amazon S3 저장소를 CDN 오프로딩과 함께 사용하거나, 대안적으로 S3 저장소를 프록시 캐시 설정과 함께 사용하는 것이 실제로 가능하다는 사실을 발견했습니다.

실제로 저는 이미 친구에게 S3 저장소와 프록시 캐시를 설정해 달라고 요청했습니다. (참고로, 비용 문제 때문에 CDN 사용은 고려하지 않았습니다. Amazon S3의 CDN 서비스는 상당히 비쌀 수 있기 때문입니다.)

현재 제가 직면한 문제는 다음과 같습니다. 테스트 중 S3 저장소가 올바르게 설정되어 있고, 이론적으로 포럼의 모든 업로드가 S3로 직접 전송되어야 함에도 불구하고, 영상 파일은 여전히 S3 저장소에 업로드되지 않습니다.

혹시 이 문제를 일으키는 원인이 무엇인지, 또는 무엇이 잘못 설정되었을 수 있는지 설명해 주실 수 있는 분이 있을까요?

감사합니다.

대신 어떤 일이 발생하나요? 오류 메시지가 표시되나요?

사이트 설정 - 파일에서 "최대 첨부 파일 크기(kb)"와 “허용된 확장자” 설정도 확인해 보시는 것이 좋습니다.

CDN과 S3를 사용하더라도, 클라이언트의 대역폭과 해상도에 가장 적합한 형식으로 변환(트랜스코딩)하는 기능이 없으므로 이 구성은 비디오에 적합하지 않습니다.


답변 주셔서 정말 감사합니다. 현재 상황은 다음과 같습니다.
현재 제 포럼에서 이미지는 S3에 성공적으로 업로드되지만, 동영상은 업로드되지 않습니다. 이 점이 정말 혼란스럽습니다.

S3가 동영상 처리에는 여전히 이상적이지 않을 수 있다는 점은 이해하고 있지만, 포럼의 주요 콘텐츠는 텍스트와 이미지입니다. 동영상 기능은 일부 사용자의 필요를 충족시키기 위한 것일 뿐이며, 동영상 자체의 크기도 크지 않을 것입니다. 이렇게 알려주셔서 정말 감사합니다.

제 질문에 대한 답변을 잊으셨네요 :slight_smile:

Amazon의 CDN은 S3 버킷에서 데이터를 내보내는 것(egress)보다 저렴합니다. S3 버킷 앞에 CDN을 사용하는 것이 확실히 좋습니다.

아직 말씀해 주지 않은 오류가 비디오 파일 크기가 너무 크기 때문일 것으로 추정됩니다. 이를 변경할 수 있는 설정이 있지만, Enable direct S3 uploads를 활성화하는 것이 더 나은 방법일 수 있습니다.


포럼에 영상을 업로드하려고 하면 이제 바로 다음과 같은 메시지가 표시됩니다:

“죄송합니다. 해당 파일이 너무 큽니다(최대 크기는 50MB입니다). 클라우드 공유 서비스에 큰 파일을 업로드한 후 링크를 붙여넣어 보세요.”

하지만 제 영상 자체는 10MB에 불과합니다. 현재 S3 스토리지와 CloudFront CDN을 사용하여 전송을 처리하고 있습니다.

문제 해결이 매우 어렵습니다. 이전에 아무런 작업도 하지 않은 것으로 가정하고, 올바른 절차를 알려 주실 수 있을까요? 제 친구에게 올바른 단계를 따르게 하고 다시 시도해 보겠습니다.

안녕하세요, 답변 주셔서 감사합니다.

저는 이미 제 친구에게 S+ 스토리지의 프록시 캐싱 방식에서 S3 스토리지 + CloudFront CDN 전송 방식으로 전환하도록 요청했습니다. 그러나 전환에 실패한 것 같고, 아직 그 이유를 알지 못합니다. 그래서 제 친구가 다시 시도할 수 있도록 정확한 실행 명령어를 제공해 주실 수 있는지 문의드립니다.

또한, 사용자의 편의를 위해 포럼에 동영상 기능을 추가하는 것에 대해 저는 정말로 끈기 있게 추진하고 있습니다. 그래서 새로운 아이디어를 떠올렸는데, 이것이 실현 가능한지 알고 싶습니다—저의 의견을 정말로 듣고 싶습니다.

먼저, 저는 코딩이나 프로그래밍에 대해 전혀 지식이 없음을 말씀드리고 싶습니다. 제 대학 전공은 일본어였기 때문에 일본어 학습을 제외하고는 코드에 대한 이해가 전혀 없습니다. 제 아이디어가 처음에는 순진해 보일 수 있으니 양해 부탁드립니다.

제 포럼을 위해 임대했던 서버가 중단되어 재구축에 노력을 기울이면서 S3 스토리지와 CloudFront CDN의 핵심 포인트를 배울 수 있었습니다. 이후 이 지식을 적용하여 다른 스토리지 및 CDN 서비스 제공업체가 있는지 궁금해했습니다. ChatGPT에 문의했고, 원하는 답변을 얻게 되어 기뻤습니다.

실제로 저는 항상 동영상 사이트를 구축하고 싶었지만, 하드 드라이브 비용 문제로 인해 금방 포기를 했었습니다. 이제 새로운 솔루션을 알게 되면서, Discourse 포럼의 동영상을 지원하기 위해 동영상 사이트를 구축하려는 아이디어를 다시 되살리게 되었습니다.

GPT의 추천에 따라, 동영상 사이트 시스템으로 PeerTube 또는 MediaCMS를 사용할 수 있다는 것을 알게 되었습니다—둘 다 훌륭한 솔루션입니다.

현재 저는 두 가지 의문이 있습니다:

첫 번째 점: 두 동영상 사이트 시스템 모두 Backblaze B2 스토리지와 Cloudflare CDN 전송을 지원합니다. 동영상이 제 하드 드라이브에 저장되지 않으므로, 동영상 사이트의 재생은 이미 Backblaze B2 API를 호출합니다. 제가 원하는 것은 링크를 게시하는 것이 아니라, 포럼의 업로드 버튼을 사용하여 제 MediaCMS(예를 들어) 동영상 사이트를 소스로 직접 호출하도록 포럼을 연결하는 것입니다. 이는 두 번의 API 호출을 의미합니다:

  1. 포럼이 MediaCMS 동영상 사이트를 호출합니다.
  2. MediaCMS 동영상 사이트가 Backblaze B2 스토리지를 호출합니다.

이러한 반복적인 API 호출이 기술적으로 실현 가능한지 알고 싶습니다.

두 번째 점: 포럼 시스템과 동영상 사이트 시스템이 사용자 계정 시스템을 공유할 수 있는지 여부입니다. 이는 사용자가 동일한 계정을 사용할 수 있는지 여부와 관련되며, API 호출 방식에 영향을 미칩니다.

  • 옵션 1: 동영상 사이트의 관리자로서, 포럼과 연결된 관리자 계정을 등록합니다. 포럼이 API를 통해 동영상을 업로드할 때, 기술적으로는 관리자가 MediaCMS 웹사이트에 업로드하는 것과 같습니다.
  • 옵션 2: 사용자 계정 시스템이 공유되면, 동영상 업로드는 사용자의 자체 포럼 계정으로 수행되고, API를 통해 MediaCMS 웹사이트와 동기화됩니다. 그러면 사용자는 동영상 사이트에서 자신의 계정 아래에 업로드된 동영상을 볼 수 있습니다.

이러한 접근 방식에 대해 GPT에 문의했고, GPT는 일반적으로 긍정적인 피드백을 주었습니다. 그러나 불행히도, 반복적인 사용 과정에서 GPT는 고급 의사결정에 대한 지침과 도움을 제공할 수 있지만, 상세한 답변에 대해서는 때때로 부정확할 수 있음을 발견했습니다. 저에게는 코딩 지식이 없으므로, 이러한 아이디어가 실제로 실현 가능한지 확신이 서지 않습니다.

가능하시다면, 이러한 아이디어 중 어떤 부분이 실현 가능하고 어떤 부분은 그렇지 않을지 지적해 주시면 매우 감사하겠습니다.

그들은 아마 이 토픽에 참여해야 할 것 같습니다. 업로드용 S3 호환 객체 스토리지 프로바이더 구성을 따랐고 설정을 ymll 파일에 넣고 S3에 자산을 푸시하는 부분을 추가했나요?

아마 브라우저가 파일 크기를 제대로 전달하지 못하고 있는 것 같습니다.

이것을 시도해 보셨나요?


안녕하세요. 사실 다음과 같은 상황입니다:
10MB 이하의 영상은 제 서버에 업로드할 수 있지만, 영상 파일 자체는 S3에 업로드할 수 없습니다.
영상을 업로드하면 시스템이 자동으로 첫 번째 프레임을 섬네일로 캡처하며, 이 섬네일 이미지는 S3에 업로드할 수 있습니다.

그러나 10MB를 초과하는 영상의 경우, 아무것도 업로드할 수 없습니다.

친구가 업로드를 위한 S3 호환 객체 스토리지 제공자 구성을 따랐다면 enable_s3_uploads를 보지 못했을 것입니다. 데이터베이스에서 ENV 대신 해당 설정을 하는 것이 문제의 일부인지 명확하지 않습니다.

Enable direct S3 uploads와 같은 것이 아닙니다. 이것은 "직접 S3 업로드 활성화"입니다.

또한 Max image size KBMax attachment size KB도 변경해야 합니다.

하지만 저는 최대 업로드 용량을 100MB로 변경하고 37MB 파일을 업로드해 보았는데 "파일이 너무 큽니다"라는 오류가 발생했습니다. 따라서 버그가 있는 것일 수 있습니다. 제가 테스트한 사이트는 한동안 업데이트를 하지 않았습니다.

app.yml에서도 변경하셨나요?

모든 도움에 진심으로 감사드립니다.
그는 Configure an S3 compatible object storage provider for uploads 의 지시를 따랐다고 했지만, 작동하지 않았습니다.
그러나 방금 제안하신 대로 최대 업로드 파일 크기를 100MB로 변경한 후, 비디오가 S3 스토리지에 성공적으로 업로드되었습니다.
정말 감사합니다!

그는 잘못 수행했고, 도움을 요청했어야 했습니다. 아마도 S3에 자산을 업로드하는 부분을 생략한 것 같습니다.

좋네요! 그 100MB 제한을 어떻게 늘리는지에 대한 주제도 어딘가에 있습니다.