[Firebase 웹] 지정된 시간마다 Cloud Function 직접 호출

2022. 3. 6. 22:07Firebase

728x90

이번 포스트에서는 트리거로 클라우드 함수를 호출시키는 방식이 아닌 직접 호출하는 방법에 대해 알아보자.

 

파이어 베이스 앱에서 직접 함수를 호출하는 방법은 아래와 같다.

 

앱에서 직접 함수 호출 (onCall)

HTTP 요청을 통한 함수 호출 (onRequest)

일정에 따라 함수 호출 (schedule)

 

첫 번째와 두 번째 방법은 추후 포스트에서 알아보고 오늘은 일정에 따라 함수를 호출해보도록 하자.

 


함수 예약

 

많은 웹/앱들을 보면 정기적으로 특정한 작업이 이루어지는 걸 본 적이 있을 것이다.

예를 들어 매주마다 리더보드가 갱신된다던지, 매일 특정한 시간에 알림을 받아봤을 것이다.

 

필자는 아래와 같은 상황 때 해당 방식을 유용하게 사용했다.

 

- 회원 탈퇴 시 회원정보를 바로 삭제하지 않고 7일 뒤에 삭제 하기 (7일마다 한 번씩 삭제 작업 진행)

- 미션 구독 중인 고객님들에게 매일 오후 7시에 주기적으로 알림 톡 전송

 

작성 방법을 바로 알아보자.

(클라우드 함수 초기 세팅 방법은 2022.03.01 - [Firebase] - [Firebase 웹] Cloud Function이란? 초기 세팅하기 포스트를 참고)

//schedule.js

exports.everyDayTask = functions
  .region("asia-northeast3") // 가장 가까운 리전 선택 (한국 기준 northeast3)
  .pubsub.schedule("every day 00:00") // 매일 오전 12시에 실행할 함수
  .timeZone("Asia/Seoul") // 타임존 선택
  .onRun(async (_) => {
  	// 매일 실행할 함수 작성
  })

 

위와 같이 작성하게 되면 매일 오전 12시에 everyDayTask라는 함수가 호출된다.

schedule 부분은 App Engine cron.yam 구문 또는 Unix Crontab을 참고해서 작성하면 된다.

 

매주 월요일 3시에 호출해야 한다면 every day 00:00 이 아닌,

 

every monday 15:00

 

이런 식으로 구문을 참고해 작성해주면 된다.

 

타임존을 지정해주지 않으면 기본적으로 America/Los_Angeles로 설정이 되어있기 때문에 zoneinfo을 참고해서

함수 호출 시점의 기준이 될 타임존도 선택해 주어야 한다.

 

모든 세팅을 완료했으면 배포로 마무리 해주자

firebase deploy --only functions:함수이름

 

참고: https://firebase.google.com/docs/functions/schedule-functions?hl=ko 

 

함수 예약  |  Firebase Documentation

의견 보내기 함수 예약 지정된 시간에 함수를 실행하도록 예약하려면 functions.pubsub.schedule().onRun()을 사용하세요. 이 간편한 메서드는 Pub/Sub 주제를 만들고 Cloud Scheduler를 사용하여 원하는 일정에

firebase.google.com