AWS

[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (2)

Sean 션 2023. 11. 14. 14:49

기존의 방식에 문제점을 발견했다.

가장 핵심 기능이었던 Lambda Authorizer에 대한 문제로, 해당 기능을 사용하기 위해선 토큰을 지정된 형식으로 보내야 한다.

따라서 X-Slack-Signature 를 헤더에 담아 사용하는 Slack API에 대한 인증을 구현하기가 참 .. 까다롭다.

헤더를 바꿔주는 리졸브 함수를 앞에 추가할수도 있긴 하겠다..

어쨌든 그렇게 됬으니까, 이왕 이렇게 된거 판을 키워보자.

 

Step Functions

State Machine

다음과 같이 State Machine을 구성했다. AWS가 참 사용하기 편리하게 만들어뒀다.

Slack Verifier에서는 ValidateFunction을 호출하고, 인증이 완료되면 반환값 Payload에 valid == true와 함께 HTTP Method, path, 기타 파라미터를 넘겨주도록 하겠다.

 

Result는 응답하기 위한 통합 환경으로 input의 페이로드에 대한 적절한 response를 만들어 반환할것이다.

 

API Gateway를 만들고, Step Functions와 통합한 후 반환값을 Result로 integrate하여 구성하도록 하겠다.

 

(내가 생각한) 장단점

장점 : Inline한 Payload로 함수 구성이 간결해진다. Slack Verifier가 필요한 정보만 payload로 넘겨주기 때문에 기분이 좋다.

단점 : 간단한 로직임에도 Lambda함수가 여러 건 수행된다. + Step Functions의 비용은 덤..

 

구현 마치고 커뮤니티에 질문해서 best practice에 대한 조언을 받아봐야겠다,, ㅎㅎ

 

State Machine code

이렇게 코드를 가져와서 내 SAM에 넣으면 된다.

뭐야.. IaC를 하려고 했는데 GUI에서 코드를 가져오면 이거 완전 제어의 역전 당한거 아닌가 ..ㅋㅋ

 

AWS Toolkit의 Visualizer

 

이렇게 내 로컬 환경으로 가져왔다. 이걸 기반으로 수정만 해주면 된다.

 

생각보다 내가 안다고 생각하고 맞다고 생각한 것들이 틀리는 경우가 많다. 역시 실습이 최고의 공부 방법이다..!

이대로 구현 마치고 돌아오겠습니다.