Presigned URL이란?
1. Presigned URL이란?
S3에 저장된 파일을 제한된 시간 동안만 접근할 수 있게 해주는 임시 링크
- AWS 인증이 없는 사용자도 접근 가능하다.
- URL에 서명(signature) 과 만료 시간이 포함되는 것이 특징이다.
- 다운로드 또는 업로드 둘 다 가능하다.
2. 왜 필요한가?
S3는 기본적으로 비공개(private) 이기 때문에, 이미지나 파일을 외부 사용자에게 보여주려면 S3를 공개로 설정해야 하거나 Presigned URL을 발급해야 한다. 이 때 Presigned URL 이 더 안전하고 일시적인 방법으로 선호된다.
3. 사용 예시
시나리오 | 설명 |
---|---|
사용자 프로필 이미지 업로드 | 프론트엔드에서 서버를 거치지 않고 S3에 직접 업로드 |
다운로드 링크 제공 | 로그인한 사용자에게만 일시적 다운로드 허용 |
전자책/PDF 같은 유료 콘텐츠 | 구매한 사람에게만 유효기간 있는 다운로드 링크 제공 |
- Presigned URL은 기본적으로 몇 분~몇 시간 단위로 설정
- 예: 1시간짜리 링크는 1시간 지나면 접근 불가
4. 예시 코드
https://my-bucket.s3.amazonaws.com/sample.pdf?
X-Amz-Algorithm=AWS4-HMAC-SHA256&
X-Amz-Credential=...&
X-Amz-Date=...&
X-Amz-Expires=3600&
X-Amz-Signature=...
위는 Presigned URL이 생성된 형태이다. URL 자체에 인증 정보와 만료 시간이 포함되어 있어, 다른 사람도 이 링크만 알면 다운로드 가능하지만, 시간이 지나면 무효가 된다.