본문 바로가기

node.js

[node.js] multer와 S3를 이용한 이미지 업로드 (multer 설치 부터 S3이미지 업로드 까지) - 2. S3

S3는 Amazon Simple Storage Service로, 인터넷용 스토리지 서비스입니다. 쉽게 AWS에서 제공하는 파일 저장 공간이라고 생각하시면 됩니다. multer-s3를 사용하여 이미지 업로드 시 로컬 서버가 아닌 S3에 이미지를 업로드하게 됩니다.

기본적인 multer에 대한 설명은 이전 포스팅 [node.js] multer와 S3를 이용한 이미지 업로드 (multer 설치 부터 S3이미지 업로드 까지) - 1. multer 를 참고해 주세요.

🍟 S3 버킷 생성

AWS에서 로그인한 후, S3 버킷을 생성해줍니다. 버킷생성 과정은 링크를 참고하시면 됩니다.

🍖 IAM 설정하기

IAM이란 AWS 리소스에 대한 엑세스를 안전하기 제어할 수 있는 웹 서비스 입니다. 이를 통해 리소스를 사용하도록 인증하거나 권한 부여된 대상을 제어합니다. 아래는 IAM 설정 과정에 대한 간단한 설명입니다. 추가적인 설명은 링크를 참고하세요.

  • AWS 서비스에서 IAM을 선택하고, 사용자 - 사용자 추가를 선택합니다. - 세부 정보에서 사용자 이름을 지정하고, 엑세스 유형은 프로그래밍 방식 엑세스를 선택합니다.
  • 권한 설정에서 기본 정책 직접 연을 선택하고 AmazonFullAccess를 체크합니다.
  • 태그, 검토 사용자 만들기 순으로 클릭하면 끝
  • 성공했다면, 엑세스 키 ID와 비밀 엑세스 키 값이 나오는데 이건 awsconfig.json 설정에서 필요하므로 반드시 메모해야 합니다.

🍠 필요한 모듈 설치

  • multer-s3 : 이미지 업로드 시 S3에 업로드 하도록 만들어주는 모듈
  • AWS-SDK : AWS 서비스를 연결하기 위한 모듈
    npm install aws-sdk multer-s3

🍗 awsconfig.json 파일 생성

accessKeyId, secretAccessKey는 IAM에서 생성한 2가지 키 값을 입력해주면 됩니다. region은 S3 지역입니다. 이는 접속 URL을 통해 확인이 가능합니다.

⛔ 이 파일의 key값들은 유출되면 안되기 때문에 반드시 github업로드시 반드시 gitignore설정을 하셔야합니다.

{
  "accessKeyId": "엑세스 키",
  "secretAccessKey": "시크릿 엑세스 키",
  "region": "ap-northeast-2"
}

🎂 multer.js 파일

const multer = require('multer');
const multerS3 = require('multer-s3');
const aws = require('aws-sdk');
aws.config.loadFromPath(__dirname + '/awsconfig.json');
const s3 = new aws.S3();

const upload = multer({
    storage: multerS3({
        s3: s3,
        bucket: '버킷이름',
        acl: 'public-read',
        key: function(req, file, cb) {
            cb(null, Math.floor(Math.random() * 1000).toString() + Date.now() + '.' + file.originalname.split('.').pop());
        }
    }),
    limits: {
        fileSize: 1000 * 1000 * 10
    }
});

module.exports = upload;

multer.js 파일을 위와같이 만들어주면 이전 포스팅 multer 설치 부터 S3이미지 업로드 까지(1) - multer 통해 이미지 업로드하기 에서 사용했던 single과 같은 메소드들을 동일하게 사용할 수 있습니다.

이미지를 업로드 하시고 AWS에서 확인해 보면 아래와 같이 이미지가 저장됩니다.

 

반응형