GCP Cloud Function 특정 시간에 자동으로 호출하기

AWS도 많이 쓰긴 했었지만 최근 들어 GCP를 많이 이용하기 시작했고, AWS의 Lambda와 같은 역할을 하는 GCP의 Cloud Function에 대해 특정 시간마다 해당 함수에 event를 전달하는 방법에 대해 소개하고자 한다.(국내 블로거분들 중에는 해당 기능을 소개해주시는 분이 안 계시더라...)

 

일단 GCP 콘솔로 들어가서 프로젝트 생성을 한다.

그 이후 상단 위 메뉴 버튼을 눌러 cloud function으로 들어가 사용하고자 하는 cloud function을 생성하자.

cloud functions의 함수 만들기를 누르면,

이런 입력 화면으로 넘어가게 되는데, 여기서 함수 이름과 리전은 자유롭게 설정을 해두되, 트리거 유형은 꼭 HTTP로 하자.

여기서 인증의 경우는 본인의 자유인데, 나는 개인적으로는 "인증 필요"를 체크하는 것을 선호하며 "인증 필요" 항목을 체크했을 경우 나중에 나올 cloud Scheduler에 IAM을 부여해주어야 한다.(이것은 따로 나중에 올리도록 하겠다.)

 

설정을 끝낸 뒤 저장을 누르고 가장 아래에 위치한 다음 버튼을 누르게 되면,

위와 같은 화면이 나오는데, 여기서는 본인이 필요한 코드를 작성한 뒤 저장을 하면 된다.

다만 저장하기 전에 위에 "Cloud Build API에서 선택한 런타임을 사용해야 합니다." 라는 에러가 발생을 하는데 이 경우에는 Cloud Build API를 사용 설정하지 않았을 때 발생한다. 그럼 또 그것은 어딨는데!? 라고 할 수 있지만, 오른쪽 하얀 버튼인 "API 사용 설정" 버튼을 누르면 아래와 같은 창으로 넘어간다.

여기서 우리는 사용 버튼을 눌러주면 할 설정은 끝난 것이다.

이후 다시 코드를 저장을 하면 Cloud Function의 생성이 마무리 된다.

 

여기까지 cloud functions 생성을 마치면 이후에는 스케줄러 작성을 해야한다.

이것은 cloud functions 생성 보다 더 쉬우니 부담 갖지 말기를 바란다.

다시 탐색 메뉴의 도구 카테고리를 살펴보면 Cloud Scheduler 라는 것이 존재한다.

여기로 들어가보자

그럼 위와 같은 창이 나오게 되는데, 여기서 우리는 "작업 만들기" 또는 "작업 예약" 버튼을 눌러 cloud scheduler를 생성할 수 있다.

앞에서 말한 버튼을 누르면, 위와 같은 창으로 옮겨지는데 여기서 리전을 선택할 수 있다. 리전은 가급적 앞에서 생성한 Cloud Function과 같은 리전을 선택해주자.

다시 다음 버튼을 누르면 이 처럼 정보를 입력하는 창으로 바뀌는데, 여기서는 이름, 설명, 빈도, 시간대를 입력한다.

제목과 설명은 말 그대로 이해를 하면 되는데, 빈도의 경우는 혹시라도 unix-cron 형식을 사용해본 적이 없는 사람이라면,

https://crontab.guru/

 

Crontab.guru - The cron schedule expression editor

loading... Cron job failures can be disastrous! We created Cronitor because cron itself can't alert you if your jobs fail or never start. Cronitor is easy to integrate and provides you with instant alerts when things go wrong. Learn more about cron job mon

crontab.guru

나는 위 사이트에서 편하게 설정을 한 뒤 복사하여 가져왔다.

그리고 마지막으로 시간대의 경우는 리전에 상관없이 해당 스케줄러의 빈도가 기준으로 할 지역을 설정할 수 있기에 본인의 프로젝트 성향에 맞춰서 해주면 될 것이다.

이후 작업의 대상 구성에서 대상 유형은 HTTP로 하자(왜냐고 물으신다면... 아까 Cloud Function을 HTTP로 하지 않았나?)

HTTP를 선택하면 입력창이 훅 늘어나 위와 같은 형태가 된다. 여기서 URL은 아까 Cloud Functions에서 생성한 function의 트리거 URL을 입력하고 HTTP 메서드의 경우 Cloud Function의 코드가 어떻게 되느냐에 따라 본인이 선택하면 된다.

URL은 Cloud Functions의 해당 function에 들어가 트리거 탭으로 들어가면 확인 할 수 있다.

본문의 경우는 Cloud Functions에 전송할 request로 보면 되며, 여기에 아무것도 안 넣을 수도, 또는 간단히 넣을 수도, 또는 다양한 정보를 전달해 줄 수도 있다.

인증 헤더의 경우 위에서 말했던 IAM의 개념으로 저것이 Cloud Functions를 생성할 때 "인증 필요"에 체크를 했다면 꼭 넣어줘야 한다. 안 그럼 호출 시기가 될 때마다 실패하는 기적(?)을 볼 수 있을 것이다.

그리고 마지막 고급 설정 구성은 말 그대로 선택사항이므로 본인의 선택으로 맡기겠다.

마지막으로 만들기 버튼을 누르면 위와 같이 스케줄러가 만들어진 것을 확인할 수 있다!!

여기서 굳이 설정했던 빈도를 기다려서 테스트를 할 필요는 없고, 가장 우측에 있는 지금 실행 버튼을 눌러 해당 스케줄러가 잘 돌아가는지, 그리고 Cloud Function이 잘 돌아가는 지 확인할 수 있다.

(Cloud Function의 경우에도 테스트 탭을 이용하여 테스트를 진행하고 로그를 확인해볼 수 있다.)

 

이상 Cloud Scheduler를 이용하여 빈도에 따라 자동적으로 Cloud Functions를 호출하는 방법을 소개하였다.

꼭 이 글이 많은 사람에게 도움이 되길 기대해보며 글을 줄이도록 하겠다.

 

긴 글 읽어주셔 감사합니다.

'Programming > Cloud' 카테고리의 다른 글

GCP Cloud Functions에 고정 IP 할당하기  (3) 2021.06.18

댓글