Step 1 : Lambda 서버(Sales API) - DB 연결
Step 2 : “재고 없음” 메시지 전달 시스템 구성
Step 3 : 메시지를 Factory API로 전송하는 Lambda 구성 및 DLQ 추가
Step 4 : 데이터베이스의 재고를 증가시키는 Lambda 함수 생성
“어떤 목적을 달성하기 위해 원래 목적과 전혀 상관없는 일들을 계속해야 하며 그중 마지막 작업”.
STEP 1
Error: Cannot find module ‘serverless-http’
git clone을 해온 상태라 npm install
로 package.json
에 포함된 의존성 패키지들을 일괄 설치를 해줘야 된다.
하지만 설치하지 않고 배포를 먼저 하니 모듈을 찾을 수 없다는 에러 메시지. 기본적인 것을 지나치지 말자..
→ npm install
을 해주니 잘 작동했다
이왕 serverless-http에 대해 좀 더 알아봤다.
Deploy a REST API using Serverless, Express and Node.js
Node.js 어플리케이션과 지정된 API Gateway 사이에서 인터페이스를 조정하는 작은 미들웨어.
Lambda 함수를 실행하여 HTTP API 응답을 생성하기위해 서버리스와 API 정의를 연결하는 serverless-http이다. serverless.yml에서 functions - events에 httpApi를 작성하여 js파일에 정의된 함수를 엔드포인트로 호출 시 실행되게 할 수 있는 것이다.
참고 : https://velog.io/@usreon/Serverless의-이해-API-Gateway-AWS-Lambda
STEP 4
Error: Cannot find module ‘axios’
stock-lamba
에서 레거시 시스템(Factory API)에 제품 생산 요청하는 상황.
npm install axios
명령으로 axios 라이브러리를 설치하고 코드 맨 윗줄에 const axios = require('axios').default
를 추가했음에도 axios 관련 에러 메시지 발생.
구글링 구글링..
Runtime.ImportModuleError Error: Cannot find module 'axios/lib/utils' Serverless
람다에서 타사 API를 호출할 때 axios가 내부적으로 구현되어 있어야 된다고 한다. stock-lamba.js
파일은 직접 만든 serverless 프로젝트여서 package.json 파일이 없었고 그래서 모듈이 제대로 설치가 안되었던…
package.json 파일을 만들어서 dependency에 axios를 추가하여 npm install
후 다시 실행하니 잘 작동.
axios는 node.js에서 HTTP 명령을 보내는 라이브러리. (fetch와 유사)
→ https://axios-http.com/kr/docs/intro axios 공식 자료
→ https://velog.io/@eunbinn/Axios-vs-Fetch fetch와 유사하다고 해서 찾아본 axios vs. fetch
+++
Lambda 계층 만들기 및 공유 - AWS Lambda
https://kimtaehyun98.tistory.com/143
https://medium.com/signal9/aws-lambda-layer-사용하기-node-js-8c299a1d0a6f
소스코드나 외부라이브러리들을 layer 라는 단위로 모듈화 하고 이를 여러 lambda 함수에서 사용할 수 있도록 해주는 방법을 사용해도 된다.
프로젝트 진행 중 프로젝트 목적 외에 나타난 실수나 에러는 npm, package.json과 같은 프로젝트 기본중의 기본 사항들이었다. 이때까지 해오면서 조금 익숙해졌다고 생각했는데.. 아무생각없이 지나치고 실수하는 것들이 있다. 프로젝트 내용 정리 후 기본적인 내용 복습과 AWS 서비스들과 연결해서 실행이나 배포시 발생할 수 있는 에러(ex.각각의 마이크로서비스들에 대한 모듈, 정책, 권한문제등)에 대한 공부도 더 해야 될 것같다.…😅