본문 바로가기

etc

AWS - S3

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을 저장하면 됩니다.