-
NODEJS] AWS의 S3에 파일 업로드 다운로드 구현NodeJS 2019. 11. 24. 04:33728x90
NODEJS] AWS의 S3에 파일 업로드 다운로드 구현
AWS EC2 서버에서 공지사항에 들어가는 첨부 파일을 업로드 하고 다운로드 하는 기능이 필요 했다.
다음의 순서로 처리하면 쉽게 된다.
1. 사용자 생성 하기
1. AWS IAM에서 사용자를 생성 하고, 애세스 유형을 프로그램 방식으로 선택
{: .image-left}이후 결과로 Access key ID, Secret access key를 알고 있어야 한다.
2. 권한으로 AmazonS3FullAccess를 할당
{: .image-left}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');
참고자료
728x90'NodeJS' 카테고리의 다른 글
swagger-node + mongoose 예제 (0) 2020.06.09 JAVA 개발자가 시작하는 NodeJS (0) 2020.06.08 pm2 로그를 관리하는 모듈을 이용하자 (0) 2019.11.23 package-lock.json은 왜 필요 한가? (0) 2019.11.19 Broswer의 Cookie 와 localstorage 의 차이점 정리 (0) 2019.11.18