# AWS S3
S3는 AWS의 파일을 업로드할 수 있는 서비스이다. Dropbox 같은 저장소이다.
S3는 bucket 단위로 나누어서 저장한다. bucket이란 AWS S3에서 파일을 저장하는 폴더 같은 곳이다.
먼저 bucket을 만들어보자!
# Bucket 생성
# IAM
액세스 유형을 프로그래밍 방식 액세스로 사용자를 추가한다.
권한설정은 AmazonS3FullAccess 권한을 준다.
마지막에 액세스 키 ID
와 비밀 액세스 키
는 꼭 적어놓아야 한다.
// .env
AWS_KEY = "AKIARQNG4Z4GWPMNQ6OM";
AWS_SECRET_KEY = "ZLvmmiuf7UY5sq70kUKNkx21kgywit8D5Rcqf8t27";
# Amazon software development kit, multer-s3 설치
npm i aws-sdk multer-s3
# multer의 업로드 방식 AWS S3로 변경
// middlewares.js
import multer from "multer";
import multerS3 from "multer-s3";
import aws from "aws-sdk";
import routes from "./routes";
const s3 = new aws.S3({
secretAccessKey: process.env.AWS_SECRET_KEY,
accessKeyId: process.env.AWS_KEY,
region: "ap-northeast-2",
});
// multer를 이용해서 file 저장 주소 지정
// const multerVideo = multer({ dest: "uploads/videos/" });
const multerVideo = multer({
storage: multerS3({
s3,
acl: "public-read",
bucket: "youtube-clone-jh/video",
}),
});
const multerAvatar = multer({
storage: multerS3({
s3,
acl: "public-read",
bucket: "youtube-clone-jh/avatar",
}),
});
서버에 유저의 파일을 저장하지 말자!
만약 그 파일이 바이러스라면, 서버를 망가뜨릴 수도 있다.
트래픽이 늘어나면, 더 많은 서버를 필요로 할 수도 있다.