npm install aws-sdk —save

const AWS = require('aws-sdk');
const fs = require('fs');
AWS.config.loadFromPath('<<config 파일위치>>');
AWS.config.update({ region: 'ap-northeast-2' });
  • aws-sdk : s3 접근에 필요한 모듈
  • fs : 파일을 읽어오는 모듈
  • config.loadFromPath: accessKeyId, secretAccessKey 를 config파일에 저장해둔다.
  • 서버에서 접근하려면 accessKeyId 와 secretAccessKey가 필요하고, 이 두개의 키는 AWS에서 S3에 접근 가능한 IAM User를 생성하면 발급!
config.json
{
  accessKeyId: "비밀비밀",
  secretAccessKey: "더 비밀비밀"
}
  • region을 적어준다. (서울은 “ap-northeast-2”)

    * IAM란 Identity and Access Management의 약자로, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.


const s3 = new AWS.S3();
const param = {
  Bucket: '<<버킷이름>>',
  Key: '<<버킷에 올라갈 폴더/파일이름>>',
  ACL: 'public-read',
  Body: fs.createReadStream('<<버킷에 올릴 파일>>'),
  ContentType: 'image/png'
};
  • Bucket: AWS S3에 만들어 놓은 버킷 이름
  • Key: S3에 저장될 위치 존재하지 않으면 생성
  • ACL: S3에 사전정의된 권한 부여 집합
  • Body: 저장되는 데이터 [ string, buffer, stream ]
  • ContentType: MIME 타입 [ 확장자가 없을때는 반드시 타입 설정 ]
s3.upload(param, (err, data) => {
  if (err) console.log(err);
  console.log(data);
});
  • 업로드를 실행 실행확인