without haste but without rest
[aws] aws lambda로 http 리퀘스트 핸들링 본문
tft 데이터를 적재하기 위한 파이프라인을 구축하던 중에 람다를 사용하기로 결정했다. 람다는 서버리스 솔루션이고 트리거가 작동하면 미리 지정해둔 스크립트로 반응을 한다.
내가 구현하고자 하는 파이프라인은 데이터가 스트림으로 들어와서 카프카가 필요하지 않지만 그렇다고 배치처리라고 하기엔 애매하다. 대략 20분마다 데이터를 수집해서 저장해야하므로 람다를 사용하면 효율적으로 리소스를 사용할 수 있을 것이라고 판단했다.
tft_data_transport가 트리거 작동하면 실행할 스크립트다. 왼쪽은 API GATEWAY고 얘도 솔루션이다. 엔드포인트 및 프로토콜 방식을 지정해준다. 정리하면 api 게이트웨이는 네트워크 연결 방식을 결정하고 람다는 해당 서버에 요청이 들어오면 어떻게 반응할 것인지에 관해 결정한다.
api 게이트웨이 리소스 페이지에서 메서드를 정의 해주면 별다른 설정없이 네트워크 연결이 가능하다. api 서버가 정상적으로 작동하는지 확인하기 위해서 GET 그리고 데이터를 흘려보내줄 POST 만 구현했고 나머지는 다 막아뒀다.
자료를 찾아보니 대부분 노드js로 작성된 코드라 살짝 헤매다가 공식 도큐먼트 살펴보니 event 파라미터가 json 형태고 http 프로토콜이 json 형태로 들어오는 것을 보니 클라이언트 요청에 대응 하려면 event['httpMethod']로 어떤 요청인지 확인하면 된다. 관련 도큐먼트 링크를 첨부
이런식으로 어떤 요청이 들어왔는지 확인하고 핸들링할 수 있다. 이제 POST 요청이 들어오면 해당 데이터를 S3에 적재하면 된다.
POST 요청에 포함된 데이터는 http 데이터그램에서 body에 있으므로 event 딕셔너리의 body를 키로 불러온다. 이제 데이터 전송까지 확인했으니 해당 데이터를 s3 버킷으로 적재하는 코드만 구현하면 된다.
'Cloud' 카테고리의 다른 글
LocalStack - AWS를 로컬 환경에서 사용하기 (0) | 2022.01.04 |
---|---|
[aws] aws lambda로 s3에 파일 저장하기 (2) | 2020.11.29 |
[aws] boto3 도큐먼트 (0) | 2020.11.28 |
[aws] 파이썬으로 aws S3에 파일 업로드 하기 (0) | 2020.08.05 |
[AWS] AMI와 인스턴스 (0) | 2020.07.22 |