반응형

Cloud Scheduler: GCP의 Cloud function에 올려둔 코드를 주기적으로 호출해보자.

주기적인 호출(=cron)을 위해서는 GCP의 Cloud schduler 앱을 사용한다.

나는 10분에 한 번씩 cloud function에 있는 특정 함수가 호출되도록 cloud scheduler에서 작업을 추가했다.

 

1. GCP > Cloud Scheduler > 작업 만들기

10분에 한 번씩 cloud function에 있는 특정 함수가 실행되도록 할 것이므로 빈도를 */10으로 설정해준다.

URL은, cloud function에서 만들었던 함수의 trigger되는 URL이다.

(== 내가 Trigger 하고 싶은 cloud function의 특정 함수 URL)

 

 

HTTP 헤더(Content-Type, User-Agent)는 해당 task를 저장하면 자동으로 입력되는 값이다.

인증헤더는 일반적으로 'OIDC 토큰 추가' 를 사용한다. 

https://cloud.google.com/scheduler/docs/http-target-auth?hl=ko 

 

HTTP 대상에 인증 사용  |  Cloud Scheduler 문서  |  Google Cloud

의견 보내기 HTTP 대상에 인증 사용 적절한 사용자 인증 정보가 있는 연결된 서비스 계정을 설정한 경우 Cloud 스케줄러는 인증이 필요한 HTTP 대상을 호출할 수 있습니다. 서비스 계정 설정 Cloud Sche

cloud.google.com

 

그렇게 scheduler를 생성 후 '다음 실행' 동안 기다려보면, scheduler를 통해 함수가 실행되는 것을 확인할 수 있다.

반응형
반응형

* 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