0

NodeJS 및 AWS로 앱 서버를 개발 중입니다.ELB 및 S3가있는 EC2의 파일 업로드 API

ELB 및 EC2를 사용하여 서버 환경을 설정하고 있습니다.

ELB를로드 밸런서로 사용하고 여러 개의 앱 서버 EC2 인스턴스를 첨부했습니다.

MongoDB에는 하나의 EC2 인스턴스가 사용됩니다.

제 질문은 파일 업로드를 포함한 요청에 대한 것입니다.

업로드 된 파일이 앱 서버 (EC2 인스턴스)에 없어야하므로 S3에 업로드 된 파일을 저장하고 앱 서버 (EC2 인스턴스)가 액세스 할 수 있도록하려고합니다.

대략적인 해결책은 앱 서버가 클라이언트의 파일을 수락하면 S3으로 이동하고 앱 서버에서 파일을 삭제하는 것입니다.

하지만 성능이 약간 저하 될 수 있으며 깨끗한 느낌이 들지 않습니다.

가장 좋은 방법입니까? 또는 그것을 해결할 다른 방법이 있습니다.

S3에 파일을 업로드하는 가장 좋은 방법이라고 생각합니다.

그러나 다른 데이터와 함께 파일이 업로드됩니다. (예 : 프로필 업로드 - 이름 : 문자열, 나이 : 번호, profileImage : 파일)

앱 서버에서 다른 데이터를 처리해야하므로 클라이언트가 S3에 직접 업로드해서는 안됩니다.

더 좋은 아이디어가 있습니까?

저를 구해주세요.

추신 : 나는 네이티브가 아니기 때문에 내 표현을 이해할 수 없다면 알려 주시기 바랍니다. 그렇다면 최선을 다해 설명을 추가하겠습니다!

답변

0

최종 사용자가 버킷에 쓸 수있는 임시 자격 증명을 사용하여 S3에 직접 업로드 할 수 있습니다.

node.js로하려는 작업을 정확히 수행 한 좋은 코드가 있습니다. here.

  • 는 응용 프로그램에서 AWS SDK를 포함
  • 생성하는 자격 증명을 사용하여 적절한 자격 증명을 제공 : 요컨대 있도록 외부 링크를 참조

    답변, SO에 눈살을 찌푸리게 짧은 수명을 가진 서명 된 URL

  • 최종 사용자에게 업로드에 사용할 수있는 서명 된 URL을 제공합니다 (진행률 피드백과 함께 비동기적임).
+0

감사합니다. @chris. 나는 당신의 대답으로 문제를 해결하려고 노력하고 있지만 또 다른 문제가있다. 미리 서명 된 URL을 얻는 데 성공했으며 브라우저에서 이미지를 S3로 직접 업로드 할 수 있습니다 (post-man : google-chrome 확장자로 테스트 중입니다). 그러나 업로드 된 모든 이미지 파일이 손상되었습니다. 파일이 업로드되었고 바이트가 원본과 동일합니다 (엄격히 확인하지 않았습니다). 그러나 이미지 파일을 다운로드하고 실행 한 후 메시지 파일을 열 수 없습니다.깨 졌거나 인식 할 수없는 파일 형식입니다. (나는 파일 png와 jpeg를 업로드했다.) 나를위한 어떤 해결책? 나는 2 일 동안 이걸로 고투한다. –