brunch

You can make anything
by writing

C.S.Lewis

by Daniel Lim Nov 11. 2019

NODEJS] AWS의 S3에 파일 업로드 다운로드

따라해보면 쉽습니다.


AWS EC2 서버에서 공지사항에 들어가는 첨부 파일을 업로드 하고 다운로드 하는 기능이 필요 했다.

다음의 순서로 처리하면 쉽게 된다.

1. 사용자 생성 하기

1. AWS IAM에서 사용자를 생성 하고, 애세스 유형을 프로그램 방식으로 선택

이후 결과로 Access key ID, Secret access key를 알고 있어야 한다.

2. 권한으로 AmazonS3FullAccess를 할당

2. nodejs에서 aws-sdk 사용하기      

# 프로젝트 초기화
$> npm init # aws-sdk 모듈 설치
$> npm install aws-sdk --save 


3. bucket 생성 하기

createBucket.js      

const AWS = require('aws-sdk');
const ID = 'Access key Id';
const SECRET = '';
const BUCKET_NAME = '';
const s3 = new AWS.S3({   accessKeyId: ID,   secretAccessKey: SECRET });
const params = {
   Bucket: BUCKET_NAME,
   CreateBucketConfiguration: {
       // Set your region here
       LocationConstraint: "ap-northeast-2"
   }
 };
s3.createBucket(params, function(err, data) {
   if (err) console.log(err, err.stack);
   else console.log('Bucket Created Successfully', data.Location);
 }); 


4. 파일 업로드

uploadFile.js      

const fs = require('fs');
const AWS = require('aws-sdk');
const BUCKET_NAME = '';
const s3 = new AWS.S3({   accessKeyId: '',   secretAccessKey: '' });
const uploadFile = (fileName) => {
   const fileContent = fs.readFileSync(fileName);
   const params = {
       Bucket: BUCKET_NAME,
       Key: 'test.txt', // File name you want to save as in S3
       Body: fileContent   }
;
   s3.upload(params, function(err, data) {
       if (err) { throw err; }
      console.log(`File uploaded successfully. ${data.Location}`);
   });
 };
uploadFile('./uploads/test.txt'); 


5. 파일 다운로드

download.js      

const fs = require('fs');
const AWS = require('aws-sdk');
 const BUCKET_NAME = '';
const s3 = new AWS.S3({   accessKeyId: '',   secretAccessKey: '' });
const downloadFile = (fileName) => {   
  const params = {       
    Bucket: BUCKET_NAME,      
    Key: 'test.txt', // File name you want to save as in S3   
  };   
    s3.getObject(params, function(err, data) {       
      if (err) {           
          throw err;      
      }
      fs.writeFileSync(fileName, data.Body.toString());  
     });
};
downloadFile('../../uploads/test-download.txt'); 


참고자료  

Uploading Files to AWS S3 with Node.js

작가의 이전글 Javascript] console method
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari