본문 바로가기

AWS

AWS lambda로 batch job 만들어서 실행하기 (feat. sam, ga4 data api)

728x90
반응형

여러가지 삽질을 했지만 아래와 같은 순서로 진행. 

우선 파이썬으로 batch에서 수행할 내용을 코딩 해야 하는데 그 전에 

SAM 이라는 서비스로 template을 만들고 그 안에서 코딩하는게 좋다. 

 

이 서비스를 이용하게된 이유는 기존 lambda 함수에 python library 계층을 만들어서 넣으려고 하니 

GCP 에서 쓰는 아래 라이브러리들에서 cython 에러가 나면서 import가 되지 않았다. 

google-analytics-data==0.18.2
google-api-core==2.15.0
google-api-python-client==2.111.0

 

sam init \
    --runtime python3.10 \
    --name Service-Sample \
    --app-template hello-world

 

위처럼 sam init으로 프로젝트를 만들면 자동으로 여러가지 소스들이 생기는데 

app.py 에 들어가는 내용이 기존에 aws 의 lambda 함수에 작성하던 내용이다. 

aws lambda (애플리케이션) -> sam cli 
SAM : AWS Serverless Application Model 
이거 Build 하려면 PC에 Docker 깔려 있어야 함

 

SAM 명령어 참고 

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-reference.html

 

AWS SAM reference - AWS Serverless Application Model

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

 

ga4 data api 를 사용하기 위해 credential json을 프로젝트 안해 넣고 실행에 성공

 

그 뒤에는 

sam build --use-container 

명령어 실행, 이때 docker 가 깔려 있어야 됨. 

 

그 이후에 

sam deploy 하면

template.yml 안에 있는 정보들을 참고 하여 AWS cloudformation 이라는 아이가 

소스가 올라갈 S3도 생성하고 lambda 도 생성하고 연결할 API gateway 까지 만들어서 완성을 해준다. 

 

이 모든게 5분 정도 안에 완성. 

 

그러고 API 를 실행하면 수행 되고, lambda 함수 내에서 Test를 할 수도 있다. 

 

그러고 나서 

cloudwatch 에 가서 규칙을 등록하려고 하니 Amazon EventBridge 라는 녀석으로 안내를 해 준다. 

 

이 다음에는 사실 일정 등록하고 lambda를 연결만 해주면 되는데 cron 표현식을 보고 몇번 해보면 등록 할 수 있다.

 

cron 표현식 참고 

https://docs.aws.amazon.com/ko_kr/eventbridge/latest/userguide/eb-cron-expressions.html

 

크론 표현식 참조 - 아마존 EventBridge

'#' 문자를 사용하는 경우 day-of-week 필드에 표현식을 하나만 정의할 수 있습니다. 예를 들어 "3#1,6#3"은(는) 두 개의 표현식으로 해석되기 때문에 유효하지 않습니다.

docs.aws.amazon.com

 

이렇게 연결하면 lambda로 batch job 만들기 끝~!

728x90
반응형