>  기사  >  백엔드 개발  >  리소스 부족 없이 S3 파일 다운로드 처리

리소스 부족 없이 S3 파일 다운로드 처리

WBOY
WBOY앞으로
2024-02-10 19:36:09942검색

处理 S3 文件下载而不耗尽资源

php 편집기 Xinyi는 서버 리소스 소진을 방지하기 위해 S3 파일 다운로드를 처리하는 효율적인 방법을 소개합니다. S3는 Amazon에서 제공하는 확장 가능한 클라우드 스토리지 서비스이지만 대용량 파일 다운로드를 처리할 때 기존 다운로드 방법을 사용하면 서버 리소스가 고갈될 수 있습니다. 이 기사에서는 S3 파일 다운로드를 효과적으로 처리하고 청크 다운로드 및 스트리밍을 통해 서버 성능과 사용자 경험을 향상시키는 PHP 기반 솔루션을 소개합니다. 이 방법에 대해 함께 알아볼까요?

질문 내용

S3에서 여러 파일 형식을 업로드하고 다운로드할 수 있는 go-gin 애플리케이션이 있습니다.

s3에 업로드하기 전의 모든 파일은 AWS s3cryptoclient, AES GCM 및 KMS의 키를 사용하여 암호화됩니다. 따라서 s3 버킷에 관한 한 모든 것이 바이너리입니다.

getObject SDK 명령을 사용하여 파일을 서버에 다운로드하고 해독한 다음 io.write(tempfile)를 사용하여 다운로드할 수 있도록 이 파일을 클라이언트에 제공할 수 있습니다.

여기서 문제는 S3에 10GB 크기의 파일이 포함되어 있고 매일 여러 사용자가 서버에 액세스한다는 것입니다. 앞서 살펴보았듯이 16GB RAM이 있는 서버에 임시 파일을 작성하면 메모리가 빨리 소모될 수 있지만 이러한 서버를 실행하는 데 드는 비용도 염두에 두어야 합니다.

병목 현상은 파일을 제공하기 전에 복호화해야 한다는 점입니다. 이 사용 사례에서는 미리 서명된 S3 URL이면 충분합니다. 단, 고객이 암호화한 경우를 제외하고는 s3 미리 서명된 URL로 해독이 제공되지 않습니다. 우리의 경우 AWS 암호화가 처리 중이므로 이 솔루션을 사용할 수 없습니다.

go-gin/NGINX를 사용하여 클라이언트에 직접 파일을 쓸 수 있는 이 문제를 해결하기 위한 팁이나 가능한 사용 사례가 있는 사람이 있나요?

현재 사용자의 파일 다운로드 처리

으아악

}

해결 방법

한 가지 옵션은 객체를 응답 본문으로 클라이언트에 직접 쓰는 것입니다.

으아악

위 내용은 리소스 부족 없이 S3 파일 다운로드 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제