개발/JS
[AWS] S3에서 파일을 다운로드할 수 있게 헤더 설정하는 법
BellRiver_Lee
2025. 6. 10. 23:10
바쁜 사람들을 위해 코드 먼저:
See the Pen Untitled by BellRiver (@orugpbqu-the-solid) on CodePen.
const accessKey = "";
const secretKey = "";
const region = "";
const bucketName = "";
위 코드에서 4개 항목만 채워주시면 됩니다.
위 코드와 함께 AWS에서 진행해야 하는 설정들이 있습니다.
IAM 설정:
- AWS 사이트에서 IAM을 검색합니다.
- 좌측 메뉴의 "사용자"를 클릭합니다.
- "사용자 생성"을 클릭하여 사용자를 생성해 줍니다.
- 사용자를 생성하면 "accessKey"와 "secretKey"를 얻을 수 있습니다.
(key류는 생성 시 한 번만 확인할 수 있으므로 안전한 곳에 복사하여 저장합니다.) - 권한 > 권한 추가를 클릭합니다.
- "AmazonS3FullAccess" 권한을 추가해 줍니다.
S3 설정:
- S3에서 버킷을 생성해 줍니다.
- 모든 사람이 접근할 수 있도록 아래 설정을 줍니다.
버킷 이름 설정: 원하는 이름으로
ACL 비활성화됨(권장) 선택
이 버킷의 퍼블릭 액세스 차단 설정: 체크 해제
버킷 버전 관리: 비활성화 체크
기본 암호화: Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화
버킷 키: 활성화 - 버킷 만들기 클릭.
- 생성한 버킷 클릭.
- 권한 클릭.
- 버킷 정책 편집 클릭.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bellriver-test/*"
}
]
}
7. CORS(Cross-origin 리소스 공유)
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST",
"DELETE",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"ETag"
]
}
]
위 내용이 거의 전부이기에 문제가 생길 것 같지는 않으나,
에러가 나오면 해당 에러를 검색하거나, AI를 통해 간단히 해결할 수 있을 것입니다.
코드에서 파일 다운로드를 위한 가장 중요한 부분은 아래와 같습니다.
const params = {
Bucket: bucketName,
Key: fileName,
Body: file,
ContentType: file.type || 'application/octet-stream',
ContentDisposition: 'attachment; filename="' + fileName + '"'
};
여기서 꼭 ContentDisposition을 설정해 주어야 합니다.
그렇지 않으면 이미지 파일 같은 경우 웹에서 열리기만 하고 다운로드가 되지 않습니다.
제가 잘못 적은 부분이나, 보완 사항이 있다면 댓글 부탁드립니다.
확인 후 빠르게 수정하겠습니다.
그럼 오늘도 즐거운 하루 보내세요!

728x90
반응형