반응형

Slack은 협업 도구로서의 역할을 넘어 다양한 통합과 자동화를 가능하게 하는 강력한 플랫폼입니다. 특히 Slack Events API를 활용하면, 사용자의 메시지, 멘션, 리액션 등 다양한 이벤트에 반응하는 봇을 만들 수 있습니다. 이 글에서는 Python과 AWS Lambda를 사용하여 Slack Bot을 만드는 방법을 소개하겠습니다.

왜 AWS Lambda인가?

AWS Lambda는 서버리스 컴퓨팅 서비스로, 서버 관리의 부담 없이 코드를 실행할 수 있습니다. 특히 Python에서는 AWS Lambda 함수를 사용하는 데 필요한 리소스가 많지 않아, 빠르고 저렴하게 봇을 구현할 수 있습니다.

 

AWS 람다(Lambda) 비용 정책 살펴보기

#1. AWS Lambda와 서버리스 컴퓨팅 AWS Lambda는 Amazon Web Services(AWS)에서 제공하는 서버리스 컴퓨팅 서비스입니다. "서버리스"라는 용어는 사용자가 서버를 직접 관리할 필요가 없다는 것을 의미합니다.

yunwoong.tistory.com

준비사항

  • Slack Workspace: 테스트할 Slack 워크스페이스가 필요합니다.
  • AWS 계정: AWS Lambda를 사용하기 위한 AWS 계정이 필요합니다.

#1. Slack App 생성

1. Slack api 사이트로 이동하여 [Create an App] 버튼을 클릭합니다.

2. 활성화된 팝업창에서 [From scratch]를 클릭합니다.

3. 앱 이름을 작성하고, 슬랙 작업 환경을 선택한 후에 [Create App]을 클릭합니다.

4. [Bots]를 클릭합니다.

5. Slack 앱을 만든 후에는 "Event Subscriptions"을 활성화해야 이벤트를 받을 수 있습니다.

이를 위해 Slack API 대시보드에서 앱 설정으로 이동한 후 "Event Subscriptions" 섹션을 찾아 "Enable Events"의 우측 상단 토글 버튼을 눌러 활성화합니다. 이후에는 Slack 이벤트를 받을 서버의 URL을 "Request URL"에 입력해야 합니다. 이 URL은 AWS Lambda 함수의 API Gateway 엔드포인트를 사용할 예정입니다. 여기서 일단 대기하고 AWS Lambda 함수를 만들도록 하겠습니다.


#2. AWS Lambda 함수 생성

1. AWS Management Console에 로그인한 후, 서비스 목록에서 "Lambda"를 선택합니다.

 

AWS Management Console

AWS Support 플랜은 AWS로 성공하는 데 도움이 되는 다양한 도구, 프로그램 및 전문 지식에 대한 액세스의 조합을 제공합니다.

aws.amazon.com

2. 새 함수를 생성하기 위해 [ 함수 생성 ] 버튼을 클릭합니다.

3. 함수 이름, 런타임, 아키텍처를 선택합니다.

4. Lambda 함수가 실행될 때 필요한 권한을 설정합니다. 새 역할을 생성하거나 기존 역할을 사용할 수 있습니다. 선택 후 [ 함수 생성 ] 버튼을 클릭하여 함수를 생성합니다.

5. [ 트리거 추가 ] 버튼을 선택하여 트리거를 설정합니다.

6. AWS Lambda 함수를 생성한 후에는 이벤트를 트리거할 수 있는 여러 가지 방법이 있습니다. 그중에서도 API Gateway는 HTTP 요청을 Lambda 함수로 라우팅 할 수 있는 매우 유용한 트리거입니다. Slack Events API와 Lambda를 연동하기 위해서는 API Gateway를 통한 설정이 필요합니다. API Gateway를 선택합니다.

7. API 상세 설정은 간단한 테스트를 위해 API 유형은 HTTP API를 선택하고 보안 설정에서는 Open을 선택합니다. [ 추가 ] 버튼을 클릭하여 API Gateway를 생성하고 Lambda 함수에 연결합니다.

8. Slack Event Subscriptions 활성화를 위해서는 challenge 과정을 위해 코드를 아래와 같이 수정합니다.

import json

def lambda_handler(event, context):
    body = json.loads(event['body'])
    
    # Challenge 요청을 확인하고 응답
    if 'challenge' in body:
        return {
            'statusCode': 200,
            'body': json.dumps({'challenge': body['challenge']})
        }

Event Subscriptions을 활성화하고 challenge 과정을 거치는 것은 Slack Bot을 만들기 위한 필수 단계인데 Slack과 서버가 올바르게 연결되었음을 확인하고, 이후에 다양한 이벤트를 처리할 수 있게 하기 위함입니다. 코드를 수정 후 [ Deploy ]를 눌러서 배포까지 진행합니다.


#3. API Endpoint를 통한 Slack과 AWS Lambda 연결

1. 다시 구성 탭으로 돌아와 API Gateway의 엔드포인트를 복사합니다.

2. Slack API 사이트로 가서 Request URL에 붙여 넣습니다. 상단에 Verified 가 나오면 정상입니다.


이번 글에서는 AWS Lambda를 활용하여 Slack Bot을 개발하는 과정 중, 필요한 설정과 권한 부여, 그리고 Slack에서의 봇 추가 방법에 대해 알아보았습니다. 이 설정들은 봇이 제대로 작동하기 위한 기초적이면서도 중요한 단계입니다.

다음 글에서는 이 설정들을 바탕으로 실제로 AWS Lambda와 Slack을 연동하고, 이벤트를 처리하는 방법에 대해 알아보겠습니다. 설정이 완료되면, 다음 단계에서는 더 복잡한 로직이나 다양한 기능을 쉽게 추가할 수 있습니다.

 

AWS Lambda를 이용한 Slack Bot 개발 (2) : API Gateway를 통한 이벤트 처리

이번 글에서는 AWS Lambda를 활용하여 Slack Bot을 개발하는 과정 중, API Gateway를 통한 이벤트 처리에 대해 자세히 알아보겠습니다. 이 글은 "AWS Lambda를 이용한 Slack Bot 개발 가이드"의 두 번째 글입니

yunwoong.tistory.com

반응형