Java를 사용하여 Amazon S3에 대용량 (1GB 이상) 파일 업로드 : 대용량 파일이 일시적으로 서버에서 많은 공간을 차지함

Nov 18 2020

Java를 사용하여 Amazon S3에 대용량 파일 (1GB 이상)을 업로드하려고합니다.

  • AWS S3 멀티 파트 업로드를 사용하여 대용량 파일을 청크로 업로드하고 있습니다. https://docs.aws.amazon.com/AmazonS3/latest/dev/HLuploadFileJava.html

  • 프런트 엔드에서 청크로 파일을 업로드하는 것도 사용하고 있습니다.

따라서 업로드되는 파일은 서버에 청크 단위로 임시로 업로드되고 S3에 청크 단위로 업로드됩니다. 이제 문제는이 방법이 일시적으로 서버 공간을 소비하기 때문에 서버에 막대한 부하를가한다는 것입니다. 여러 사용자가 동시에 대용량 파일을 업로드하려고하면 문제가 발생합니다.

서버에 임시로 파일을 저장하지 않고 사용자 시스템에서 Amazon S3로 청크 단위로 파일을 직접 업로드 할 수있는 방법이 있습니까?

프런트 엔드를 통해 파일을 직접 업로드하면 키가 노출 될 위험이 있습니다.

답변

qkhanhpro Nov 18 2020 at 15:50

서명 된 URL을 사용하여 클라이언트에서 직접 업로드를 활용해야합니다. 이에 대한 많은 문서가 있습니다.

AWS SDK 사전 서명 된 URL + 멀티 파트 업로드

미리 서명 된 URL은 사용자 / 고객이 특정 객체를 버킷에 업로드 할 수 있도록하려는 경우 유용 하지만 AWS 보안 자격 증명이나 권한이 필요하지는 않습니다.

사용자가 업로드 할 수있는 크기를 제한하는 데 관심이있을 수도 있습니다.

미리 서명 된 URL을 사용하여 Amazon S3에 업로드하는 동안 객체 크기 제한

서명 된 URL을 클라이언트가 특정 S3 위치에 액세스 할 수있는 임시 자격 증명으로 생각하십시오. 이러한 자격 증명은 짧은 시간에 만료되므로 보안 문제가 적지 만 서명 된 URL에 대한 액세스를 적절하게 제한해야합니다.