해당 레포지토리에는 We Code 부트캠프 사람들의 기상 스터디인 'we-ake-up'의 효율적인 진행을 위해 AWS Lambda, AWS CloudWatch Events, Slack API, GitHub API를 활용한 Python 소스 코드가 있습니다. 아래 사진과 같이 스케줄링을 통해서 특정 시간에 동작합니다.
아래 글을 통해서 동작 원리에 대한 자세한 설명을 확인할 수 있습니다.
- AWS Lambda에 관한 기본 개념
- GitHub API 사용 방법
- AWS Lambda & CloudWatch Events, Slack API, GitHub API를 통한 실제 구현
개인 정보가 작성된 파일입니다.
config.py: 실제 AWS Lambda를 작동할 때 필요한 정보가 들어 있는 파일입니다. 개인 정보가 담긴 파일로.gitignore를 통해 본 레포지토리에는 업로드 되어 있지 않습니다.config_example.py:config.py파일에서 실제 정보를 제거하여 올린 파일입니다. 동작 원리를 참고할 수 있게 만들어 첨부하였습니다.
AWS Lambda를 동작시키는 함수가 작성된 파일입니다.
lambda_handler(): 실제 AWS Lambda에서 동작하는 함수로Worker클래스의create_issue와close_issue함수를 사용하여 GitHub Issue를 생성 및 닫고 Slack에 보여줍니다.
GitHub API와 Slack API를 사용하는 함수가 작성된 파일입니다.
create_time(): GitHub Issue를 작성할 때와 Slack에 메세지를 보낼 때 오늘의 날짜를 생성해 사용할 함수입니다. 이때timedelta를 통해 UTC 기준이었던 시간을 한국으로 바꾸고strftime을 통해datetime객체를 문자열로 바꿉니다.Worker(): GitHub API와 Slack API가 동작하는 클래스 입니다.__init__(): 매개변수로url,headers를 받아 함수에서 계속 사용합니다.get_issues(): 이후close_issue()함수에서 Issue number가 필요하기 때문에 이를 얻기 위해 사용합니다.create_issue(): GitHub 레포지토리에 실제 Issue를 생성하고Slacker를 활용하여 Slack 채널에 해당 Issue URL 등의 정보를 메세지로 전송합니다.close_issue(): 생성 되었던 Issue를 닫고 Comment를 달았던 사람들을 확인하여 전체 목록에서 실패한 사람을 추출, Slack 채널에 해당 정보를 메세지로 전송합니다.
requirements.txt또는python.zip을 통해서도 필요 라이브러리 및 패키지를 확인할 수 있습니다.
pip install slacker

