AWS Lambda로 Slack에 메시지 전송해 보기

AWS Lambda로 Slack에 메시지를 전송하는 과정을 정리해 봤습니다.
2021.09.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS Lambda와 Slack을 연동해서 메시지를 전송하는 과정을 정리해 봤습니다.

Lambda로 Slack에 메시지를 전송하는 과정은 다음과 같습니다.

  • IAM 역할 생성
  • Lambda 생성
  • Slack incoming-webhook 사용하기
  • Lambda 소스 코드 작성
  • Slack으로 메시지 확인

IAM 역할 생성

IAM에서 역할 탭으로 들어간 다음「역할 만들기」버튼을 클릭합니다.

Lambda를 선택하고 다음으로 넘어갑니다.

「AWSLambdaBasicExecutionRole」을 선택하고 다음으로 넘어갑니다.

적절하게 이름을 입력하고 역할을 만듭니다.

Lambda 생성

Lambda에서 함수 탭으로 들어간 다음「함수 생성」버튼을 클릭합니다.

새로 작성을 선택하고, 함수 이름과 python 3.7을 선택합니다.

기존 역할 사용을 선택한 다음, 방금전 만들었던 역할을 선택하고 함수를 생성합니다.

Slack incoming-webhook 사용하기

Slack 워크스페이스에서「앱 추가」버튼을 클릭합니다.

WebHooks를 검색해서 추가 버튼을 클릭합니다.

「Slack에 추가」버튼을 클릭합니다.

채널을 선택한 다음「수신 웹후크 통합 앱 추가」버튼을 클릭합니다. 그러면 웹후크 URL을 포함해서, 웹후크 구성 방법에 대한 설명이 나옵니다.

Lambda 소스 코드 작성

import json
import urllib.request

def post_slack(argStr):
    message = argStr
    send_data = {
        "text": message,
    }
    send_text = json.dumps(send_data)
    request = urllib.request.Request(
        "WebHooks URL", 
        data=send_text.encode('utf-8'), 
    )

    with urllib.request.urlopen(request) as response:
        slack_message = response.read()

def lambda_handler(event, context):
    post_slack("Lambda에서 Slack으로 보내는 메시지 입니다.")

urllib 패키지를 사용해서 데이터를 전송합니다.

Slack으로 메시지 확인

Lambda에서「Test」버튼을 클릭해서 실행합니다. 따로 설정할 것은 없고, 디폴트 값으로 실행하면 됩니다.

에러없이 잘 작동합니다.

Slack을 확인해 보면 정상적으로 메시지가 전송 된 것을 확인할 수 있습니다.

참고