AWS S3

gogigogigogi·2025년 2월 3일

AWS S3 설정


IAM 생성

  • s3에 파일을 업로드 하려면 aws 사용자의 인증정보가 필요하다.
  • root 유저 정보는 유출방지를 위해서 IAM 유저를 만들어서 필요한 권한만 부여해서 사용하는것이 적절하다.
  • IAM을 생성하고 access key와 secret key를 발급받아 사용한다.

AWS SDK 처리

  • aws.config.update()로 aws-s3와 연결할때 필요한 인증정보를 설정한다.
  • new aws.S3()로 s3를 사용하기 위한 객체를 생성한다.
const aws = require('aws-sdk');

aws.config.update({
  accessKeyId: process.env.AWS_S3_ACCESS_KEY,
  secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY,
  region: process.env.AWS_S3_REGION,
});

const s3 = new aws.S3();

Multer 처리

  • multerS3은 multer를 통해 s3에 직접 파일을 업로드할 수 있도록 해준다.
  • acl(access control list) :
    s3에 업로드된 파일은 기본적으로 비공개이지만 public-read로 설정하면 url을 통해 모두가 접근 가능해진다.
  • multerS3를 통해 req.file안에 location값으로 s3 파일 url이 담긴다.
const multerS3 = require('multer-s3');

const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: process.env.AWS_S3_BUCKET,
    acl: 'public-read', // 파일 접근 권한 설정

    key: (req, file, cb) => {
      cb(null, Date.now().toString() + '-' + file.originalname);
    },
  }),
});

생성한 s3 객체로만 파일 업로드를 할 수 있지만, multer를 통해 파일을 받을 때 서버에 저장이 되기 때문에 삭제 처리를 해야한다. 하지만 multerS3를 사용해서 multer가 파일을 바로 s3에 업로드 할 수 있게 처리할 수 있다.

0개의 댓글