# AWS S3

S3는 AWS의 파일을 업로드할 수 있는 서비스이다. Dropbox 같은 저장소이다.

S3는 bucket 단위로 나누어서 저장한다. bucket이란 AWS S3에서 파일을 저장하는 폴더 같은 곳이다.

먼저 bucket을 만들어보자!

# Bucket 생성

버킷 생성 1

버킷 생성 2

# IAM

액세스 유형을 프로그래밍 방식 액세스로 사용자를 추가한다.

권한설정은 AmazonS3FullAccess 권한을 준다.

I am 1

I am 2

마지막에 액세스 키 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",
  }),
});

서버에 유저의 파일을 저장하지 말자!

만약 그 파일이 바이러스라면, 서버를 망가뜨릴 수도 있다.

트래픽이 늘어나면, 더 많은 서버를 필요로 할 수도 있다.