Lambda에서 SlackBot을 만들고 배운 것

AWS Lambda에서 SlackBot을 만들어 보았습니다.
막힌 일과 그 해결 방법을 공유합니다.

0. 기사의 요약 3행으로



· Lambda는 처리를 여러 번 실행할 수 있음
・그러므로, Lambda를 사용하는 경우는 균등성을 고려한 설계를 실시한다
· Slack 메시지를 처리하는 경우 event_id로 확인

1. 만든 것



Slack에서 JIRA에 과제 게시하는 Bot을 만들었습니다.


Bot에게 멘션 메시지를 보내면,
메시지를 분해하고 제목과 설명을 JIRA에 게시합니다.
메일 내용을 확실히 과제 등록하고 싶을 때에 편리합니다.

구조는 다음과 같습니다.


Lambda에서 메시지를 받으면 그대로 JIRA API를 호출하고,
JIRA에 과제를 게시합니다.
완료되면 SlackAPI에서 메시지를 반환합니다.

2. 막힌 것



가끔 Bot이 같은 과제를 2개 등록하는 일이 있었습니다.
조사해 보면 1회의 Slack 메세지를 2회 처리하고 있었습니다.
분명히 Lambda는 가끔 내부에서 처리 오류를 일으키고 다시 처리를 수행하는 메커니즘 인 것 같습니다.
다음 기사가 매우 도움이되었습니다.
htps : // v.ぁsss d. jp / c ぉ d / a ws / ぁ m-dae m 포텐 cy /

Lambda를 사용할 때는 「재처리되어도 같은 결과가 되는 실장」 즉 「요균성」의 고려가 중요하다는 것!

3. 해결 방법



Slack 메시지 고유의 ID(event_id)를 체크하는 구조를 도입.
DynamoDB에 ID를 저장하고, Lambda에서는 우선 ID를 DynamoDB의 데이터와 일치 체크해, 같은 ID가 아니면 DyanamoDB에 등록해 처리 계속하도록(듯이) 했습니다.


DynamoDB는, NoSQL의 DB로 AWS로부터 버튼수 클릭으로 테이블을 만들 수 있어 편리하네요. Lambda에서 API를 통해 데이터 등록/참조도 쉽습니다.

4. 결론



이번에는 BotKit을 사용하지 않고 Lambda에서 구현했습니다.
서버리스이므로 무료(월 100만회 콜까지)+서버 준비 수고 불필요한 것이 매력적이네요.
다음에 만들 때는 SQS를 사용해 보려고 생각합니다.
사용해 보고 알았던 문제도 있으므로 점점 공유해 갑니다!
보다 좋은 실장 방법 등 여러가지 가르쳐 주시면 다행입니다^^

좋은 웹페이지 즐겨찾기