IT/AWS Lambda & Resources Trouble Shooting
키네시스 샤드 input event driven 인/디코딩 데이터 정제 람다함수
클라우드 개발자 앙몬드
2020. 10. 16. 10:28
반응형
한동안 파이썬3 알고리즘 / 코딩 공부좀 한두달 빠져있다가 돌아왔습니다.
그리고 얼마전에는 로컬스택으로 조금 재밌게 놀아보기도 했는데, 로컬스택 활용 미션 중, 람다 함수도 만드는게 있더라구요.
이건 로컬스택을 이용한 아키텍처링 과제로, 그 중 키네시스 -> 람다 이벤트 드라이븐 구간에서 람다 백엔드 함수입니다.
* 진짜 과제는, 로컬스택을 이용하여 저 모든 아키텍처를 구성하고 POC 검증을 하라는 내용이었습니다.
* 보너스 미션으로, 테라폼 (iac)를 이용하여 이 아키텍처를 원콤내는 것이 있는데, 저는 boto3 sdk를 이용해 코드 런타임으로 한방에 구현을 해보겠습니다. (다음 글..!)
devloper-angmond.tistory.com/30
boto3 를 이용하여, 로컬스택 아키텍처 구성해보기
근 두달가까이 소식이 없다가, 그동안 쌓인 내용들을 부랴부랴 올리고 있습니다. 사실 파이썬3에 대한 이용능력을 좀 높일 필요가 있어서, 해커랭크에서 좀 살다 왔습니다. 신기한게 자격증도 ��
devloper-angmond.tistory.com
import json
import base64
import boto3
from datetime import datetime
def lambda_handler(event, context):
print(f"로그를 정제합니다.")
list_raw_record = event["Records"]
list_converted_logs = []
s3버킷의_이름 = "cloud-developer-angmonddddddd"
# 로그 정제
# KDS는 샤드 안의 데이터를 base64 인코딩하므로, 같은 방식으로 디코딩해야
# 사람의 인식이 쉬운 데이터로 변환됨
for kinesis_data in list_raw_record :
raw_data_base64_encoded = kinesis_data["kinesis"]["data"]
raw_data_decoded = base64.b64decode(raw_data_base64_encoded)
list_converted_logs.append(raw_data_decoded)
s3_client = boto3.client('s3')
# 오브젝트 put 시, S3 또한 파티션 단위이므로, 1분단위 로그가 키네시스 입력 & 람다 트리거링이므로, yyyy-mm-dd-hh-mm 단위로 S3 오브젝트 파일명을 작성
s3_client.put_object(Body=list_converted_logs, Bucket=s3버킷의_이름, Key="/nginx_logs/" + datetime.now().strftime("%Y-%m-%d %H:%M") )
print(f"로그 정제작업이 끝났습니다.")
반응형