직접 쓸 툴하나 wpf로 만들건데

이걸 내 pc에 늘 띄워두느니 람다에 걸어두면 편하겠다 싶어서
c# .net core 3.1로

aws lambda에 함수 만들고

여기에서 작업하고 로그를 dynamodb에 남기는 코드를 작성함

참고로 aws lambda는 12개월 지났어도 항상 무료임

월 40만초-GB 무료인데 월 20불만큼 매달 공짜임

dynamodb도 월 25gb 스토리지, 쓰기 25유닛, 읽기 25유닛 프로비저닝 항상 무료라서 월 20불 정도 매달 공짜임

저 정도면 툴 하나 계속 람다로 돌리고 로그 기록해도 충분하니까 사용했음

람다는 cron 걸어서 매 1분마다 돌리는데

근데 처음에 로그가 1분마다 잘 쌓이더니 언제부터인가 안 쌓임

함수는 문제없이 계속 1분마다 잘 작동하는데 디비에 로그가 기록 안되는 기현상 발생

dynamodb가 입력 지연 현상같은 게 있나? 그런데 1분마다 기록되던게 몇 십분째 이러니 이건 내 문제같은데...

보통 이러면 무조건 내 코드 문제가 맞지만 사람이 뭔가 단단히 착각 또는 확신하고 넘어가면 내가 실제로 바라보는 모니터 화면의 글씨가 보고 싶은대로 보일 때가 있잖아?

옆에 있는 사람은 단박에 찾아서 잘 읽는데 내눈에는 절대 안보이는 현상

그래서 정말 하기 싫고 귀찮아도 코드 처음부터 끝까지 정독하기로 했음.

word단위도 아닌 character단위로 하나하나 읽어보니까 글쎄

PutItem 메서드가 PutItemAsync로 되어있더라
dynamodb v2 .net core부터 비동기만 지원하더라고

그래서 인텔리센스가 저걸 빠르게 캐치해서 선택하게한건데

그러니 함수가 종료되기 전에 입력 완료되면 db스캔해서 로그가 보이다가

함수 종료가 더 빠르몀 db에 안 들어가고 람다는 정상적으로 종료되는 문제였음

c#에서는 저걸 task<> await async 키워들 조합으로 아주 초간단하게 2~3줄의 코드만으로도 디비에 입력하는 비동기 함수를 따로 작성할 수 있으니 만들고 다시 배포하니까

로그 잘 기록되고 있음

lambda cron 1분단위로 실행하는데 1분마다 실행하되 초가 00초 ~ 05초 사이에 시작하게끔 할 방법 없으려나?

지금은 이벤트 첫 실행이 37초면 계속 매분 37초마다 실행되고

함수 실행 멈추고 다시 이벤트 실행하면 첫 실행이 22초에 발생되면 매분 22초마다 실행되고 이러는데

초단위 맞추는 꼼수 없나?

지금 매 1분마다 저 함수를 실행하는 이벤트 발생기를 트리거 걸어둬서 쓰는데 저거 대신 직접 타이머 하나 만들어서 매분 00초마다 저 lambda함수 실행하면 되긴 되는데 이러면 serverless가 아닌데....