etc
AWS - S3
seo dori
2023. 5. 21. 17:16
S3란?
Amazon Simple Storage Service(S3)는 웹 상의 어디서나 언제든지 원하는 양의 데이터를 저장하고 검색할 수 있는 간편한 웹 서비스 인터페이스를 제공합니다.
javascript사용 nodejs express사용
untils file에서 s3.js를 만들어 주었습니다.
const AWS = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
const { v4 } = require('uuid');
const uuid = v4();
const s3 = new AWS.S3({
region: process.env.REGION, //버켓의 생성 지역
accessKeyId: process.env.ACCESSKEY, // 당신의 accesskey
secretAccessKey: process.env.SERCETACCESSKEY, //당신의 sercetaccesskey
});
let upload = multer({
storage: multerS3({
s3: s3,
bucket: process.env.BUCKET, //당신의 버켓이름
contentType: multerS3.AUTO_CONTENT_TYPE,
acl: 'public-read',
key: (req, file, cb) => {
cb(null, `${Date.now()}_${uuid}`);
},
}),
});
module.exports = { upload };
미들웨어에서 s3에 upload하는 방식입니다.
const express = require('express');
const checkLogInToken = require('../utils/auth');
const reviewController = require('../controllers/reviewController');
const { upload } = require('../utils/s3');
const router = express.Router();
router.get('', reviewController.getReviewByProductId);
router.post(
'',
checkLogInToken,
upload.single('reviewImg'), //한개의 사진만 올릴때 single사용
reviewController.createReview
);
// 이후 서비스단에서 하는 작업입니다.
const userId = req.user.id;
const { content, title, productId } = req.body;
const url = req.file.location;
이렇게 되면 항상하던데로 DAO단에서 게시물을 생성하고 생성된 url을 저장하면 됩니다.