-
AWS :: Multi Lambda ControlAWS 2021. 8. 6. 17:52728x90
0-1. 가상 시나리오
- Amazon S3에 저장된 데이터(ALL)를 Main Lambda를 통해, 특정 기준에 따라 각각의 Sub Lambda로 분기한다.
- 분기된 데이터(SPLIT)는 각각의 Sub Lambda의 각자의 python 코드를 통해 처리된다.
- 처리된 결과 데이터(RESULT)를 다시 Main Lambda를 통해 trigger받아 S3에 다른 경로에 저장한다.
0-2. Work Flow
1. 데이터 형식 및 S3 구조 정의
- Amazon S3에 저장되는 데이터는 API Gateway와 Kinesis Firehose를 통해 들어오고 저장된다.
- 저장되는 데이터의 형식은 다음과 같다.
- event_type은 ['event1', 'event2', 'event3', 'event4'] 중 하나이고, event와 Lambda의 mapping 관계는 다음과 같다.
- event1, 2, 3은 trigger 시 1개의 lambda만을 동작시키지만, event4의 경우 trigger 시 2개의 lambda를 동작시킨다.
- input 데이터가 저장되는 S3의 경로는 다음과 같이 구분된다.
- Path 1 : s3://bucket_name/recv_data/ALL/ : 받은 input 데이터의 모두를 저장
- Path 2 : s3://bucket_name/recv_data/SPLIT/ : 'all' 데이터를 각각의 event별로 나눈 후 저장
- Path 3 : s3://bucket_name/recv_data/RESULT/ : 'split' 데이터를 sub lambda를 통해 처리 후 결과 저장
2. Main Lambda 구현
- Main Lambda가 하는 일은, S3에 데이터(ALL)가 저장됨을 trigger로 하여, 데이터의 'event_type'을 확인한 뒤 이에 맞는 Sub Lambda를 trigger하는 것이다.
- Main Lambda의 python 코드의 구성은 다음과 같다.
- if 조건문을 통해, trigger된 데이터의 출신이 'ALL'인지, 'SPLIT'인지 구분한다.
- 'ALL'일 경우, 해당 데이터의 event_type을 비교하여 각각 다른 S3 경로에 저장한다.(SPLIT)
- SPLIT 데이터 저장 경로
- s3://{bucket_name}/recv_data/SPLIT/source={event_name}/date={yyyyMMdd}/hour={hh}/min={mm}/
3. Sub Lambda 구현
- Sub Lambda의 전체적인 코드 구성은 Main Lambda와 비슷하고, SPLIT 데이터일 경우, 목적에 맞는 처리를 하는 transform_data()를 수행하면 된다.
728x90'AWS' 카테고리의 다른 글
AWS :: API Gateway를 통해 S3에 데이터 저장하기 (2/2) (0) 2021.07.27 AWS :: Rest API를 이용하는 Data Pipeline 생성 (0) 2021.07.19 AWS :: S3 데이터를 slack에 notify하기 (AWS Lambda) (0) 2021.07.08 AWS :: API Gateway를 통해 S3에 데이터 저장하기 (1/2) (1) 2021.07.07 AWS :: EC2에 접속하여 S3 조회하기 (SSH, WSL, AWS CLI) (0) 2021.07.06