스터디-ing/Cloud

[S3] Signed URL로 파일 업로드, 트래픽 줄이기

몽상현 2024. 5. 24. 11:53

Signed URL? (출처 AWS 공식 문서)

미리 서명된 URL의 생성자가 해당 객체에 대한 액세스 권한을 보유할 경우, 미리 서명된 URL은 URL에서 식별된 객체에 대한 액세스를 부여합니다.
즉, 객체를 업로드하기 위해 미리 서명된 URL을 수신하는 경우, 미리 서명된 URL의 생성자가 해당 객체를 업로드하는 데 필요한 권한을 보유하는 경우에만 객체를 업로드할 수 있습니다.

 

다시 말해 미리 서명된 URL을 통해 S3에 접근 할 수 있고, 이때 일정한 권한만료시간을 설정해 엑세스 권한을 부여할 수 있다.

하지만 만료시간이 있을 지라도 해당 URL이 오픈되면 모든 사람이 접근 가능하기 때문에 조심해야 한다.


자 이제, 필자가 Signed URL을 사용하려고 결정한 이유에 대해 말하려 한다.

Before

기존에는 클라이언트에서 파일을 업로드 하기 위해서 Client -> Spring 서버 전송, Spring 서버 -> S3 전송 이렇게 총 2번의 단계를 거쳐야 했다. 잘못된 방식은 아니지만 단순 파일을 업로드 하는 역할만 하는데 2번의 업로드 시간과 트래픽이 발생하게 된다. 파일사이즈가 작다면 모르겠지만 S3파일, 설치파일 등등.. 용량이 큰 파일을 매번 위 방식으로 업로드 하게 된다면 굉장한 리소스 낭비로 이어지게 된다.

그래서 이 불필요한 방식을 해결하기 위해 Signed URL을 활용했다.

After

위의 그림과 차이점은 Spring 서버에 파일 정보를 전달하면 해당 정보와 Spring 서버에 이미 있는 권한으로 Signed URL을 클라이언트에게 전달하게 된다. 여기서 업로드하려는 S3경로와 만료 시간을 설정할 수 있다. 그리고 클라이언트는 발급받은 Signed URL을 이용해 파일을 업로드(PUT)하게 되면 지정된 S3경로에 해당 파일이 업로드 된다. 결과적으로 간단하게 계산하면 이전 방식에 비해 네트워크 트래픽이 1/2로 줄어들게 된다.

 

다음 글은 Signed URL을 발급하는 서버 코드글에서 만나요~!

 

2024.05.24 - [분류 전체보기] - [Java] Spring으로 S3 Signed URL 발급 받기
 

[Java] Spring으로 S3 Signed URL 발급 받기

이전 글에서 S3에 파일을 올릴 때 Signed URL로 방식을 바꿔 네트워크 트래픽을 줄이는 방법을 도식화해서 공유했다.2024.05.24 - [AWS/S3] - [S3] Signed URL로 파일 업로드, 트래픽 줄이기 [S3] Signed URL로 파

devlogkm.tistory.com