서버리스 모델인 AWS lambda를 사용해보겠습니다. Hello World를 출력하는 예제를 만들어볼겁니다. 저는 편의상 Node.js를 사용했습니다. 그러나 AWS lambda는 프레임워크나 언어에 종속되지 않아요. 이 서비스를 사용해보겠다고 새로운 언어를 배울 필요가 없으니 편하신 방법대로 사용하시면 됩니다.
설치
Node.js 패키지 매니징 도구인 npm을 사용해서 serverless를 설치할 수 있습니다.
npm install -g serverless
설치가 되었다면 serverless 명령으로 서버리스 프레임워크 도구를 제어할 수 있어요. serverless라고 풀네임 적기 어렵다면 축약된 sls로도 명령어가 먹힌다고 합니다.
프로젝트 생성
아무런 인자없이 serverless라고 입력해볼까요? 그렇다면 대화식으로 새 프로젝트를 생성할 수 있어요. 저는 기본값을 선택해서 생성해보겠습니다.
serverless
대화형이 싫으신 분들은 serverless create 명령어로도 프로젝트를 만들 수 있습니다. 자세한 정보는 sls create --help로 알아보세요.
sls create --template aws-nodejs --name hello-world --path hello-world
원하는 템플릿을 선택하고 그 다음에는 프로젝트의 이름을 입력합니다. 자체 모니터링 서비스를 이용할 것인지, 지금 당장 배포할지를 선택합니다.
현재 디렉토리 하위에 프로젝트 명으로 새로운 디렉토리가 생성됩니다.
hello-world 디렉토리에는 README.md 와 handler.js 그리고 serverless.yml이 들어있습니다. README.md 파일에는 서버리스 스택을 배포하는 테스트 방법을 알려주고 있구요. handler.js에는 hello 함수가 정의되어 있고 serverless.yml은 서버리스 스택을 생성하기 위한 정보가 적혀있습니다.
serverless.yml만 간단하게 볼까요?
service에서 서비스명이자 서버리스 스택명을 적습니다. frameworkVersion은 잘못된 서버리스 프레임워크 버전 사용을 막기 위해 명시해두는 정보라고 합니다. aws 템플릿에 있는 내용 그대로 사용하시면 됩니다. provider에는 사용하는 클라우드는 어떤것인지, 어떤 개발환경인지 명시해줍니다. 현재는 Nodejs 템플릿을 이용해서 runtime이 nodejs14.x라고 적혀있어요. 만약 파이썬으로 만드셨다면 runtime: python3.8 로 적혀있다고 합니다.
functions는 함수 트리거를 정의합니다. hello.handler를 통해 handler.js의 hello라는 함수를 실행할거에요.
handler.js에는 hello 함수가 있는지만 볼게요. module.exports를 통해서 외부에서 hello 함수에 접근할 수 있도록 했습니다. 그러므로 serverless.yml에 적힌 경로로 이 함수를 실행할 수 있겠군요.
빌드 및 배포
아래의 명령어로 serverless.yml 파일을 변환하고, handler.js를 빌드합니다. 빌드 결과물은 .serverless라는 디렉토리에 생성됩니다.
sls package
배포는 deploy 명령어를 활용하시면 됩니다.
sls deploy
자체적으로 package 명령을 수행하고 그 다음에 lambda에 적용된다고 합니다.
lambda에 배포된 함수를 테스트해보고 싶다면 invoke 명령어를 실행하면 됩니다.
sls invoke -f hello
이걸 입력하면 반환값을 리턴 받을 수 있습니다.
200코드와 함께 hello에 있던 메시지를 그대로 받았네요.
서버의 로그도 확인가능합니다. 오늘은 간단하게 예제를 그대로 배포해서 테스트해봤습니다. 사용한 서버리스 스택은 sls remove로 삭제 가능합니다.
'AWS lambda' 카테고리의 다른 글
AWS Lambda with Typescript 템플릿 생성하기 (0) | 2023.03.09 |
---|---|
[AWS lambda] Hello API 간단하게 작성해보기 (Feat. Node.js) (0) | 2023.01.04 |
AWS CLI 설치 및 설정하기 (0) | 2022.12.28 |
서버리스 컴퓨팅이란? (0) | 2022.12.27 |
AWS 프리티어 계정을 만들면 바로 해야될 설정(기본 리전 설정, 액세스 키 발급) (0) | 2022.12.23 |