Notice
Recent Posts
Recent Comments
Link
archive
fastify S3에 사진 업로드(fastify-multer, multerS3) 본문
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