반응형

* Cloud Function: GCP의 이벤트 기반 서버리스 플랫폼 (= AWS Lambda)

 

오늘은 지난 번에 만든 airflow 특정 DAG의 running 시간을 체크하는 코드를 GCP의 cloud function에서 돌려본다.

언어는 NodeJS를 사용하고, 파일은 index.js, package.json, markdown.json을 사용한다.

이전코드: https://countrymouse.tistory.com/entry/airflowdag

 

Airflow에서 특정 DAG의 실행 시간을 현재시간과 비교하여 slack으로 메시지를 보내주는 코드.

배경 GCP의 airflow에서 특정 DAG의 마지막 batch 시간 start_time을 '현재 시간'과 비교해서, 30분이상 차이가 날 경우, slack으로 알람을 보내줄 것이다. (30분이상 차이가 난다면 배치가 제대로 돌고 있지

countrymouse.tistory.com

 

* GCP cloud function은, AWS lambda와는 다르게 node_modules를 별도로 첨부하지 않는다.

그냥 코드만 올려두고 배포를 실행하면, GCP가 알아서 빌드를 하고 node_modules를 내부적으로 만들어준다.

(그래서 빌드 시간이 더 오래 걸림)

 

 

나는 이전 포스팅의 코드를 그대로 사용하며,

serverless는 이벤트에 의해 코드가 Trigger 되기 때문에 exports handler를 사용한다. 

함수는 export handler 안에서 main을 호출하고 200을 보낸 후 종료된다.

exports.start = async (req, res) => {
await main();
res.send(200);
}

 

그렇게 코드를 배포 후, 로그를 확인해보면 Function이 정상 started 되고 로그도 잘 찍힌 것을 볼 수 있다.
 
반응형

+ Recent posts