-
AWS :: S3 데이터를 slack에 notify하기 (AWS Lambda)AWS 2021. 7. 8. 13:18728x90
** 이전 게시물 참고
0-1. AWS Lambda ?
- 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 컴퓨팅 서비스
0-2. 프로세스 요약
1. Slack Webhook 생성 및 등록
- Slack Webhook를 생성하면, Webhook URL이 만들어진다.
- 해당 URL은, 특정 이벤트가 발생할 때마다 AWS Lambda에서 호출될 것이다.
- 'https://api.slack.com/'을 접속하여 Webhook를 생성한다.
- 마지막 단계 쯤에 나오는 'Webhook URL'을 복사하여 저장해둔다.
2. AWS Lambda 함수 생성
- 새로운 AWS Lambda 함수를 생성한다.
- Runtime 환경은 Python을 선택한다.
- 아래의 URL을 통해, AWS Document의 예제 Python 코드를 활용한다.
- 이 때 아래 표시된 코드 부분을 알맞게 변경해줘야 한다.
- 'url'의 경우, 위에서 발급받아 저장해둔 Slack Webhook URL을 작성한다.
- 'channel'과 'username'의 경우, 본인의 Slack 계정의 정보를 적으면 된다.
- 'text'의 경우, 실제 데이터를 가져오는 부분이라고 할 수 있고, 이는 다음 step을 참고한다.
3. S3 연결 및 Lambda 함수 수정
- Document로부터 가져온 Python 코드를 붙여넣고, url 등의 필요한 정보를 작성한다.
- lambda_handler 함수의 input 값 중 'event' 값에 대한 정보를 확인하기 위해 우선, 다음과 같이 event를 출력하는 코드를 임시로 추가한다.
- 코드 수정 후 반드시 'Deploy'를 클릭한다.
- 생성한 Lambda 함수의 trigger로 S3를 지정한다.
- 가져올 bucket을 선택하고, 'Event type'으로는 'All object create events'를 선택한다.
- 최종적인 Function overview는 다음과 같다.
- 이제 S3에 데이터를 저장한다.
- 본 게시물에서는, 이전 게시물에서 생성한 pipeline을 활용하여, AWS API Gateway로부터 S3에 데이터를 보내게 된다.
- 다음과 같이 객체 데이터가 쌓임을 확인한다.
- AWS Lambda 화면으로 돌아와, [Monitor - View logs in CloudWatch]를 선택한다.
- 'Log streams'에 S3에 데이터가 쌓임으로 인한 log가 생성됨을 확인할 수 있고, 이를 클릭하여 json 형식의 log 내용을 확인할 수 있다.
- 해당 log를 보기 쉽게 하기 위해, 복사하여 'json fomatter'와 같은 json 형식으로 보여주는 사이트를 활용하여 내용을 확인한다.
- json 형식으로 재구성한 log 내용은 다음과 같다.
- 이 중, S3 bucket의 이름이 Slack에 notify되게 하기 위해 S3 bucket 이름이 어느 변수에 저장되어 있는지 확인한다.
- S3 bucket 이름이 저장되어 있는 변수의 위치를 보아, 다음과 같은 코드를 통해 접근할 수 있음을 알 수 있고, 다음과 같이 Lambda 함수를 수정한다.
- 수정한 Lambda 함수를 Deploy하고, 위 과정을 다시 수행해본다.
- Slack에 notify됨을 알 수 있다.
728x90'AWS' 카테고리의 다른 글
AWS :: API Gateway를 통해 S3에 데이터 저장하기 (2/2) (0) 2021.07.27 AWS :: Rest API를 이용하는 Data Pipeline 생성 (0) 2021.07.19 AWS :: API Gateway를 통해 S3에 데이터 저장하기 (1/2) (1) 2021.07.07 AWS :: EC2에 접속하여 S3 조회하기 (SSH, WSL, AWS CLI) (0) 2021.07.06 AWS :: S3에서 S3로 데이터 복사하기 (0) 2021.07.06