-
AWS :: S3 데이터를 slack에 notify하기 (AWS Lambda)AWS 2021. 7. 8. 13:18728x90
** 이전 게시물 참고
AWS :: API Gateway + Kinesis Firehose >> S3에 데이터 저장하기
0-1. API Gateway 란? 규모와 관계없이 REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스 API Gateway의 아키텍처는 다음과 같다. 0-2. Kinesis Firehose 란? 스트리밍 데이터를..
kxmjhwn.tistory.com
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 코드를 활용한다.
Webhook를 사용하여 Amazon SNS 메시지 게시
Lambda 콘솔의 함수 페이지에서 함수를 선택합니다. 오른쪽 상단에서 테스트 이벤트 선택을 선택합니다. 그런 다음 테스트 이벤트 구성을 선택합니다. 테스트 이벤트 구성 대화 상자에서 새 테스
aws.amazon.com
- 이 때 아래 표시된 코드 부분을 알맞게 변경해줘야 한다.
- '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 Formatter & Validator
Format and validate JSON data so that it can easily be read by human beings.
jsonformatter.curiousconcept.com
- 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