Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

백고등어 개발 블로그

Node.js AWS S3 연결 및 사용 본문

Node.js

Node.js AWS S3 연결 및 사용

백고등어 2021. 2. 3. 23:17

우선 Node.js에서 AWS S3를 연결하여 사용하기전에 AWS S3란 무엇일까????

(Simple Storage Service) 아마존에서 제공하는 인터넷용 스토리지 서비스.

웹 등에서 사용되는 사진, 텍스트 등 여러 데이터를 손쉽게 저장 및 관리할 수 있다.

 

AWS 를 처음 사용하신다면 아래 순서의 내용을 참고해주시길 바랍니다

  1. 우선 AWS 계정을 생성한다
  2. AWS 계정 생성 후 로그인을 하고 IAM 설정을 위해 서비스 카테고리에서 IAM 을 검색한 후 IAM 으로 이동한다

*IAM 이란 Identity and Access Management의 약자로 , AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스다.

IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어한다.

라고 AWS 에 나와있다.

즉, 하나의 User가 모든 서비스에 접근할 수 있는데, 그 User 정보가 해킹당하면 큰일 난다.

여러 User를 생성 후에 EC2, S3, SES 등 권한을 나눠서 부여하면 하나의 User 정보가 해킹당해도 조금 더 안전하다.

IAM에 대한 자세한 내용은 공식 홈페이지 를 참고하기 바란다.

 

IAM 설정 방법

 

 

 

 

 

 

AWS S3 서비스에선 "버킷"이라는걸 통해 실질적인 스토리지를 생성합니다.

 

 

 

 

 

 

 

 

 

 

 

Node.js 에서 AWS S3 서비스를 연결하여 버킷에 파일을 업로드, 다운로드 하기

AWS 버킷에 파일 업로드

 

1. aws-sdk 모듈 설치

 

2. 필요한 모듈 추가

  • aws-sdk : S3 접근에 필요한 모듈
  • fs : 파일을 읽어오는 모듈
  • dotenv : 외부 파일을 통해 환경변수 관리를 도와주는 모듈

 

3. S3객체 생성

  • 서버에서 S3에 접근하려면 accessKeyId와 secretAccessKey가 필요하다.
  • 이 두개의 키는 AWS에서 S3에 접근 가능한 IAM User를 생성하면 발급된다.

 

4. S3 접근에 필요한 정보를 담고 있는 params 객체 생성

위의 객체를 자세히 알아보자

 

  • Bucket : AWS S3에 만들어 놓은 버킷 이름이다.
  • Key : S3에 저장될 위치. 참고로 존재하지 않는 디렉터리를 명시하면 자동으로 디렉터리가 생성된다.

따라서 실제로 image/imageTest 형태로 저장된다.

각 옵션에 대한 설명은 공식 사이트 확인 바란다.

  • Body : 저장되는 데이터이다. String, Buffer, Stream 이 올 수 있다.
  • ContentType : MIME 타입이다.

파일에서 확장자가 없을 때는 반드시 MIME 타입을 설정해야 합니다.

확장자가 있는 파일은 확장자에 따라 자동으로 설정되므로 이 항목을 설정하지 않아도 된다.

하지만 HTTP에서 주로 사용하는 확장자가 아닐 때는 자동으로 설정되지 않으므로 MIME 타입을

설정해주어야 한다.

 

 

5. S3에 파일 업로드

 

<전체 소스>

 

AWS 버킷에서 파일 다운로드

  • 파일 업로드 코드와 거의 비슷하며, 바뀐 부분을 중점적으로 확인해보자

S3 접근에 필요한 정보를 담고있는 params 객체를 살펴보자

파일 업로드와 비교했을 때, Body 와 ContentType 프로퍼티가 없어졌다

 

왜냐하면 파일을 다운로드할 때는 저장할 데이터의 정보를 보내주지 않아도 되고, 파일의 MIME 타입을 설정하지 않아도 되기 때문이다(당연히 다운로드할 파일의 MIME 타입이 설정되어 있기 때문이다)

 

 

다운로드할 파일의 정보를 가져오기 위한 aws-sdk 의 getObject 메서드

getObject 메서드를 사용하면 다운로드할 파일의 정보를 가져올 수 있다

 

가져오는 정보는 아래와 같다

그리고 fs 의 writeFileSync 메서드를 사용하여 다운로드받은 파일의 Body 에 있는 버퍼값을 사용하여 파일을 저장한다

(즉, 다운로드 한것이나 마찬가지다)

 

 

<전체 소스>

 

참고 자료

 - S3 파일 업로드, 다운로드

 

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

따라해보면 쉽습니다. | AWS EC2 서버에서 공지사항에 들어가는 첨부 파일을 업로드 하고 다운로드 하는 기능이 필요 했다. 다음의 순서로 처리하면 쉽게 된다. 1. 사용자 생성 하기 1. AWS IAM에서 사

brunch.co.kr

- S3 파일 업로드

 

Nodejs에서 AWS S3에 파일 업로드 하기

Nodejs에서 File을 읽어 들여서 AWS S3 스토리지에 저장하는 방법에 대해서 적어보겠다. 우선 S3 버킷이 없으면 AWS에 가서 생성하자. 구글에 좋은 글이 많으니 참고하면 된다. 아니면 내가 올린 "AWS S3

hunjang.tistory.com

 

- S3 버킷 생성, IAM 사용자 생성 및 설정

 

[AWS] S3 생성하기 + IAM 설정하기

AWS에서 제공하는 인터넷용 스토리지(strage) 서비스인 S3를 생성하고 IAM을 이용하여 리소스들을 안전하게 제어할 수 있도록 설정해보겠습니다. S3란? IAM이란? - S3 : (Simple Storage Service) 아마존에서

artiiicy.tistory.com

 

 

[AWS] S3 생성하기 + IAM 설정하기

AWS에서 제공하는 인터넷용 스토리지(strage) 서비스인 S3를 생성하고 IAM을 이용하여 리소스들을 안전하게 제어할 수 있도록 설정해보겠습니다. S3란? IAM이란? - S3 : (Simple Storage Service) 아마존에서

artiiicy.tistory.com

 

'Node.js' 카테고리의 다른 글

쿠키 설정 옵션  (0) 2020.12.10
withCredentials 와 크로스 도메인  (0) 2020.12.10
http.createServer 메소드의 CORS 응답처리  (1) 2020.11.15