백앤드(Back-End)/AWS

[AWS] Lambda API 구축(aws-serverless-express)

RyanSin 2021. 9. 28. 17:51
반응형

- 개요

안녕하세요. 이번 시간에는 Lambda API 서버를 구축하는 시간은 가져보겠습니다.

 

기본적으로 Lambda를 그냥 사용하게 되면 정말 불편한 상황들이 발생합니다. (저는 그랬습니다. ㅋㅋ 고수님들은 아닌가요?... ㄷㄷ)

 

우리가 기본적으로 개발을 할 때 사용하는 Express 나 Koa  환경이랑은 다릅니다.

 

그렇기 때문에 저는 aws-serverless-express 모듈과 express 모듈을 혼합해서 lambda API 서버를 구축합니다.

 

Express 환경에 대해 아시는 분들은 이해하실 수 있지만 모르시는 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다.

[Node.js] Express RESTFul API 서버 만들기

 

[Node.js] Express RESTFul API 서버 만들기

- 지난 시간 안녕하세요. 지난 시간에는 Node.js 설치 및 Express 웹 애플리케이션 프레임워크를 구축하는 시간을 가졌습니다. 혹시 지난 글을 못 보신 분들은 아래 글을 통해 설치 및 구축을 하고 오

any-ting.tistory.com

- 설정

package.json 파일 생성
#npm
npm init

#yarn
yarn init

 

모듈 설치
#npm
npm install express aws-serverless-express
npm install serverless-offline --save-dev

#yarn
yarn add express aws-serverless-express
yarn add serverless-offline --dev

 

아주 기본적인 모듈을 설치했습니다. 필요한 모듈은 직접 설치하시면 될 것 같습니다.

 

(serverless-offiline은 개발환경을 제공하기 위한 모듈입니다)

 

handler.js
const awsServerlessExpress = require("aws-serverless-express")
const express = require("express")

const app = express()

app.use(express.json())
app.use(express.urlencoded({ extended: true }))

app.get("/api", (req, res) => {
  res.json({ response: true, msg: "연결 성공" })
})

const server = awsServerlessExpress.createServer(app)

module.exports.index = (event, context) =>
  awsServerlessExpress.proxy(server, event, context)

Express를 알고 계시는 분들은 딱보고 아실꺼라고 생각이 듭니다.

 

하지만 환경설정과 서버 실행하는 방법에 대해 알수 없습니다.

우리는 serverless framework 를 사용하기 때문에 serverless.yml 파일을 통해 정보를 설정합니다.

 

serverless.yml
service: serverless-api
frameworkVersion: "2"

custom:
  serverless-offline:
    httpPort: 4000 # 로컬 포트
    lambdaPort: 4001 # 람다 포트

provider:
  name: aws
  runtime: nodejs12.x # 서버 버전
  lambdaHashingVersion: 20201221

functions:
  api:
    handler: handler.index

    #API 경로를 등록해줘야 한다.(해당 API를 통해 API Gateway에 등록며 개발환경에서도 등록해야 된다.)
    events:
      - http:
          path: /api
          method: get

plugins:
  - serverless-offline

serverless.yml 파일을 확인해보면 기본 port와 api 등록 그리고 plugins을 등록했습니다.

 

실제 서버를 실행해보겠습니다.

서버 실행 명령어
serverless offline start

 

서버 실행

정상적으로 서버가 실행되며 해당 경로에 접속해보겠습니다.

 

접속 확인

 

접속이 잘되는 걸 알수 있습니다.

 

Express를 잘 사용하시는 분들은 어렵지 않게 구축할 수 있을 거라 생각하지만 꼭 실습을 해보시는 걸 추천드리겠습니다!