archive

fastify S3에 사진 업로드(fastify-multer, multerS3) 본문

카테고리 없음

fastify S3에 사진 업로드(fastify-multer, multerS3)

seonyounggg 2022. 1. 12. 16:50

multer 모듈로 S3업로드 하는건 코드가 많은데

fastify-multer로 S3 연동하는 건 거의 자료가 없는듯 하다

 

사실상 코드는 거의 똑같은데 

fastify-multer 모듈을 import를 하면 오류가 난다.

선언한 변수가 모듈에도 있다? 이러길래 

import 말고 그냥 require로 바꿔봤는데 오류없어지고 잘된다. 

왜인지는 모르겠음...

 

작성한 미들웨어 코드는 아래와 같다.

const aws = require('aws-sdk');
const multer = require('fastify-multer') # 이 부분을 import가 아니라 require로 해줘야함..
const multerS3 = require('multer-s3');
import dotenv from 'dotenv';
dotenv.config();

const s3 = new aws.S3({
    accessKeyId : process.env.S3_ACCESS_KEY,
    secretAccessKey : process.env.S3_SECRET_KEY,
    region : process.env.S3_REGION
});

const uploads = multer({
    storage: multerS3({
      s3: s3,
      bucket : process.env.S3_BUCKET_NAME,
      contentType : multerS3.AUTO_CONTENT_TYPE,
      key: (req, file, cb) => {
        cb(null, `goods/${Date.now()}_${file.originalname}`);
      },
    })
});


export default uploads;

사용할 땐 Route에서 아래처럼 사용한다

fastify.post('/', { preHandler: [uploads.single('thumb')] }, GoodController.createGood);

 

S3 객체 만들 때 다른 블로그에서 ACL : public-read를 넣어주길래 따라했었는데

권한 거부된다고 뜬다;

 

구글링해보니 없애면 올라가고 외부접근은 안된다고 했는데

한번 없애봤더니 잘 올라가고 외부접근도 그냥 잘 됐다(?)

 

Comments