node.js Multer-s3

이건선·2023년 4월 10일
0

해결

목록 보기
21/48
post-custom-banner

인프라 설정

  1. IAM을 만든다
    1. 액세스 키와 비밀 액세스 키가 필요하다. IAM을 만든 후에 [보안 자격 증명] ⇒ [액세스 키]에서 키를 생성 해야 한다.
  2. 액세스 키와 비밀 액세스 키를 만든다
    1. 키들은 필수적으로 저장을 해야하며 IAM가 1개 이상일 경우 어느 쪽에 연결 되어있는지 확인해야 한다.
  3. s3 bucket에 객체 소유권에서 ACL 활성화 됨 으로 설정 해줘야 한다.

multer-s3 , aws-sdk버전 확인하기

 npm i multer 
 npm i multer-s3@2.10.0

백 엔드

const multer = require("multer");
const multerS3 = require("multer-s3");
const AWS = require("aws-sdk");
const path = require("path");
require("dotenv").config();

AWS.config.update({
  accessKeyId: <S3_ACCESS_KEY_ID>, // .env 맹신하지 말자
  secretAccessKey: <S3_ACCESS_SECRET_KEY>, // .env 맹신하지 말자
  region: "ap-northeast-2",
});

console.log(process.env.S3_ACCESS_KEY_ID);

const upload = multer({
  storage: multerS3({
    s3: new AWS.S3(),
    bucket: <S3_BUCKET_NAME>,
    acl: "public-read",
    contentType: multerS3.AUTO_CONTENT_TYPE,
    key(req, file, cb) {
      cb(null, `${Date.now()}_${path.basename(file.originalname)}`); // original 폴더안에다 파일을 저장
    },
  }),
});

module.exports = upload;
const upload = require("../modules/multer");

...

router.post("/image", upload.single("img"), cardpostsController.imagepost);
profile
멋지게 기록하자
post-custom-banner

0개의 댓글