azhy의 iOS 이야기

[Firebase] 예약 함수로 Cloud Function 호출 본문

etc

[Firebase] 예약 함수로 Cloud Function 호출

azhy 2024. 11. 7. 12:46

2022년 4월 25일에 작성됨

 

현재 진행 중인 프로젝트에서 지정된 시간에 알림을 보내야 하는 기능이 필요했습니다.

그래서 지정된 시간에 함수를 실행할 수 있도록 예약 함수를 지원하는 cloud function을 사용했고 그 내용을 정리하려 합니다.

 

자세한 내용은 공식문서 를 참고해 주세요.

Firebase, cloud Functions 세팅

프로젝트에서 cloud functions을 사용하려면 firebase, functions 세팅이 필요합니다.

[Firebase] Cloud Functions 세팅 글을 참고하거나 구글링을 통해 세팅을 완료하고 다음으로 넘어가주세요.

함수 작성

코드는 공식문서 참고했습니다.

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('5분 지남')
  return null
});

 

 

every 5 minutes - 함수 배포 시간 기준 5분 반복 실행

every 1 hours - 함수 배포 시간 기준 1시간 반복 실행

만약 'every 5 minutes' 함수를 13시 07분에 배포했으면 다음 함수는 13시 12분, 13시 17분 ... 이렇게 실행됩니다.

exports.scheduledFunctionCrontab = functions.region("asia-northeast3").pubsub.schedule('* * * * *').timeZone("Asia/Seoul").onRun((context) => {
  console.log('1분 마다 실행');
  return null;
});

 

Unix Crontab 및 App Engine 구문을 이용해서 특정 시간대를 선택할 수도 있습니다.

Crontab 페이지에서 자신이 원하는 시간 구문을 확인 및 테스트해보세요.


예시로 몇 개만 적어보면

* * * * * - 매분 실행

*/5 * * * * - 5분 기준으로 실행 (5분 10분 15분 20분 ...)

5,40 * * * * - 5분, 40분마다 실행

15 14 1 3 * - 3월 1일 14시 15분에 실행

 

timezone을 따로 설정 안 해주면 default가 America/Los_Angeles로 되어있어서 원하는 시간에 제대로 실행이 안될 수도 있으니 꼭 timezone 설정해주셔야 합니다. (추가로 region 설정을 안 해주니 실행이 안되어서 region도 수정..)

함수 배포

터미널에서 functions 폴더로 이동하고 firebase deploy --only "functions:functionName"를 입력하면 함수가 추가됩니다.

결과