AWS S3로 파일 업로드하는 법
테이블 목록
- 서문
- S3에 이미지 및 비디오 파일 업로드하기
- 문제 해결
- 작업 흐름
- S3 버킷 설정
- AWS 자격증명 가져오기
- API 경로 생성
- 클라이언트에서 S3로 파일 업로드하기
- 결과 확인하기
- 요약
서문
이 글은 S3에 이미지 및 비디오 파일을 업로드하는 방법에 대해 소개합니다. 일부 사용자에게만 업로드 권한을 부여하면서 개인 버킷을 유지하고 싶을 때 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 우리는 서버 측에서 사전 서명된 URL을 얻기 위한 요청을 보냅니다. 이렇게 얻은 URL을 사용하여 클라이언트에서 파일을 업로드합니다.
S3에 이미지 및 비디오 파일 업로드하기
이제 실제로 S3에 이미지 및 비디오 파일을 업로드하는 방법을 알아보겠습니다. 이것은 매우 간단한 방법이지만 스타일링은 하지 않고, 프로젝트에 따라 다양한 구현이 가능하도록 만들었습니다. 여기에서는 axios만 사용하겠습니다.
문제 해결
이 업로드 방법의 핵심은 사전 서명된 URL을 사용하는 것입니다. 사용자는 사전 서명된 URL을 생성하기 위해 서버에 요청을 보냅니다. 이 URL은 일정 시간(예: 60초) 동안 유효하며, 이 URL을 사용하여 클라이언트에서 파일을 S3로 업로드합니다.
작업 흐름
다음은 작업 흐름을 설명하는 다이어그램입니다.
❓다이어그램 추가 예정
S3 버킷 설정
S3 버킷은 개인 버킷으로 설정하지만 일부 사용자에게만 업로드 권한을 부여해야 합니다. 먼저 AWS 콘솔에 로그인한 다음 S3로 이동합니다. 새 버킷을 생성하고 버킷 이름과 지역을 설정합니다.
AWS 자격증명 가져오기
AWS 자격증명을 가져와야 합니다. AWS 콘솔에서 보안 자격증명으로 이동한 다음 새 액세스 키를 생성합니다. 액세스 키 ID와 액세스 키 비밀값을 확인하고, 지정한 지역도 확인합니다.
API 경로 생성
업로드를 위한 API 경로를 생성합니다. 이 예제에서는 next.js API 라우트를 사용합니다. AWS SDK와 axios를 설치한 다음 필요한 인증 정보를 설정합니다. 사전 서명된 Put URL을 얻어오는 API 핸들러를 생성합니다.
클라이언트에서 S3로 파일 업로드하기
클라이언트에서 파일을 선택하고 S3로 업로드하는 방법을 알아보겠습니다. 이미지와 비디오 파일을 구분하여 업로드할 수 있습니다.
결과 확인하기
업로드가 성공적으로 이루어진 후에는 S3 콘솔로 이동하여 업로드된 파일을 확인할 수 있습니다. 필요에 따라 다양한 기능을 추가하여 프로젝트에 맞게 수정할 수 있습니다.
요약
이 글에서는 S3에 이미지 및 비디오 파일을 업로드하는 방법을 알아보았습니다. 사전 서명된 URL을 사용하여 클라이언트에서 업로드를 처리할 수 있으며, 다양한 요구 사항에 맞게 구현할 수 있습니다.
FAQ
Q: 사전 서명된 URL의 유효 기간을 어떻게 설정하나요?
A: 유효 기간은 S3 버킷 설정 및 API 핸들러에서 설정할 수 있습니다. 예제에서는 60초로 설정되어 있습니다.
Q: 여러 개의 파일을 동시에 업로드할 수 있나요?
A: 네, 여러 개의 파일을 동시에 업로드할 수 있습니다. 클라이언트에서 여러 파일을 선택하고 각각 사전 서명된 URL을 요청하여 동시에 업로드할 수 있습니다.
Q: 사전 서명된 URL을 사용하지 않고 일반적인 업로드 방법은 없나요?
A: 사전 서명된 URL을 사용하지 않고 일반적인 업로드 방법도 있습니다. 다만, 이 방법은 개인 버킷을 유지할 수 없으며, 업로드 권한을 가진 모든 사용자가 버킷에 직접 업로드할 수 있습니다.
Q: 확장자 제한을 왜 걸어야 하나요?
A: 확장자 제한은 업로드되는 파일의 유효성을 검사하기 위해 필요합니다. 사용자가 임의의 확장자를 사용하여 악성 파일을 업로드하는 것을 방지할 수 있습니다.