step 4를 진행하는 날이 되었습니당.
데이터베이스의 재고를 증가시키는 Lambda 함수 생성
먼저 강의록에 있는 API를 직접 쏴보았다
일단 직접 함수를 통해 디비를 update하는 stock-increase-lambda를 배포해주었댱
트러블 슈팅 -1
stock-increase-lambda 를 배포를 하고 콘솔에서 삭제를 했었는데 deploy가 되지 않았다.
그래서 serverless remove 명령어를 사용해서 삭제하고 다시 배포하니 정상 동작이 되었다
트러블 슈팅 -2
axios 가 install 이 안되는 현상이 있었다.
axios install를 해도 package.json이 생기지를 않았다.
그래서 npm install을 하고 axios install를 해주었다.
윈도우에서 나타나는 현상인듯..?
그 뒤에는 포스트맨을 사용해서 공장 url로 api를 쏴보았다.
DB까지 정상적으로 업데이트 되는 것을 확인하고 stock-lamda 소스 코드를 수정했다.
그런데 api를 강의록의 목적대로 쏘려면 sale-api 의 소스 코드를 수정해야했다.
우리팀은 디비에 있는 재고값을 불러오는 식으로 작성했었는데 api에 req값을 담아주도록 변경을 해주었다.
const params = {
Message: message,
Subject: '도너츠 재고 부족',
MessageAttributes: {
MessageGroupId: {
StringValue: req.body.MessageGroupId,
DataType: "String",
},
MessageAttributeProductId: {
StringValue: req.body.MessageAttributeProductId,
DataType: "String",
},
MessageAttributeProductCnt: {
StringValue: req.body.MessageAttributeProductCnt,
DataType: "String",
},
MessageAttributeFactoryId: {
StringValue: req.body.MessageAttributeFactoryId,
DataType: "String",
},
MessageAttributeRequester: {
StringValue: req.body.MessageAttributeRequester,
DataType: "String",
},
CallbackUrl: {
StringValue: req.body.CallbackUrl,
DataType: "String",
}
},
TopicArn: process.env.TOPIC_ARN
}
이런식으로 파라미터 값을 담도록 해주었다.
그리고는 stock-lamda 소스코드를 수정해주었다.
const payload = {
// TODO:
// 어떤 형식으로 넣어야 할까요? Factory API 문서를 참고하세요.
// 필요하다면 record.body를 활용하세요.
}
axios.post('URL', payload)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
트러블 슈팅 -3
클라우드 워치로 콘솔에 찍은 event 를 확인해서 api로 쏠 수 있게 만들어주었다.
payload에 공장에서 api를 쏠 수 있도록 데이터를 담아 주었당.
이런식으로 콘솔에 찍혔는데 이상하게 자꾸 로그에 받아야하는 값이 undefined로 나왔당..
그래서 stock-increase-lamda로 파라미터 값들을 보내줄 수가 없었다.
차근차근 보니 Record의 값은 배열이었던것!
그리고 event.Reocords[0].body는 json 형식으로 변경을 해줘야했다.
그렇게 소스코드를 수정하니 메시지가 정상적인 파라미터 값을 갖을 수 있어 api를 쏠 수 있었다.
정상적으로 재고가 업데이트 되는 것을 확인
추가 시나리오까지 작성한 우리조의 아키텍쳐는 이랬다
피드백을 받고 수정한 아래 아키텍쳐
API GATEWAY 를 트리거로 사용하는 람다 함수 두개를 만들면 되지 않을까 생각했었는데,
기존 람다함수에 수량을 체트하는 로직을 만들고 SNS를 사용해서 메시지를 처리하는 방식으로 변경하였다.
그래도 평가도 어찌저찌 잘 넘겼고 step4 까지 잘 완성했다.
미리미리 캡쳐를 잘 해놔야하는데 귀찮아서 안했더니 글이 짧은 것 같네
암튼 Iac작성할때는 잘 작성해봐야지이
'코드스테이츠_Devops_4기 > section3) 마이크로서비스와 인프라스트럭처 관리' 카테고리의 다른 글
Section3 실습과제 회고작성 (0) | 2023.05.30 |
---|---|
Section3 실습과제 Day2 (0) | 2023.05.30 |
Section3 마이크로서비스 (0) | 2023.05.08 |