Lambda에서 SlackBot을 만들고 배운 것
막힌 일과 그 해결 방법을 공유합니다.
0. 기사의 요약 3행으로
· Lambda는 처리를 여러 번 실행할 수 있음
・그러므로, Lambda를 사용하는 경우는 균등성을 고려한 설계를 실시한다
· Slack 메시지를 처리하는 경우 event_id로 확인
1. 만든 것
Slack에서 JIRA에 과제 게시하는 Bot을 만들었습니다.
![](https://s1.md5.ltd/image/b4145f13efe4d8c8006b70dd94a9ac5f.jpeg)
Bot에게 멘션 메시지를 보내면,
메시지를 분해하고 제목과 설명을 JIRA에 게시합니다.
메일 내용을 확실히 과제 등록하고 싶을 때에 편리합니다.
구조는 다음과 같습니다.
![](https://s1.md5.ltd/image/8b78e635aad157211da8dbc9cc76ef89.jpeg)
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에 등록해 처리 계속하도록(듯이) 했습니다.
![](https://s1.md5.ltd/image/d6af4b26750fabe7ca07a7e259cbc17b.jpeg)
DynamoDB는, NoSQL의 DB로 AWS로부터 버튼수 클릭으로 테이블을 만들 수 있어 편리하네요. Lambda에서 API를 통해 데이터 등록/참조도 쉽습니다.
4. 결론
이번에는 BotKit을 사용하지 않고 Lambda에서 구현했습니다.
서버리스이므로 무료(월 100만회 콜까지)+서버 준비 수고 불필요한 것이 매력적이네요.
다음에 만들 때는 SQS를 사용해 보려고 생각합니다.
사용해 보고 알았던 문제도 있으므로 점점 공유해 갑니다!
보다 좋은 실장 방법 등 여러가지 가르쳐 주시면 다행입니다^^
Reference
이 문제에 관하여(Lambda에서 SlackBot을 만들고 배운 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fa60393/items/41249963ed51ad2eaeea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)