이 가이드에서는 Cloud Scheduler 및 Pub/Sub를 사용하여 Cloud 함수를 트리거하는 방법을 보여줍니다. Cloud Scheduler에서는 일반적으로 Cloud 함수의 실행을 예약할 수 있습니다. 다음을 수행합니다.
- Pub/Sub 주제를 구독하는 간단한 Cloud 함수를 만듭니다.
- 그 함수를 트리거하는 Pub/Sub 주제를 만듭니다.
- Pub/Sub 트리거를 호출하는 Cloud Scheduler 작업을 만듭니다.
- Cloud 스케줄러 작업을 실행합니다.
- 작업 성공을 확인합니다.
시작하기 전에
이 가이드는 사용자가 이미 Cloud 스케줄러 빠른 시작을 살펴봤다고 가정합니다. 따라서, 다음과 같은 도구와 리소스를 사용할 수 있습니다.결제가 사용 설정된 Google Cloud 프로젝트.
프로젝트에 사용 설정된 Cloud Scheduler API 및 Pub/Sub API. 가이드를 진행하면서 Cloud Functions API를 사용 설정합니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
- Cloud Functions
- Pub/Sub
- Cloud Scheduler
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
트리거로 Cloud 함수 만들기
Google Cloud 콘솔에서 Cloud Functions 페이지로 이동합니다.
메시지가 표시되면 API 사용 설정을 클릭합니다.
함수 만들기를 클릭합니다. API를 사용 설정하라는 메시지가 표시되면 사용 설정을 클릭하여 API를 활성화합니다.
기본 섹션에서 2세대 환경을 선택하고 함수 이름을 입력한 다음 리전을 선택합니다.
트리거 섹션에서 인증 필요를 선택합니다. 트리거 추가를 클릭하고 Pub/Sub 트리거를 선택합니다. Eventarc 트리거 패널이 열립니다. 필요한 API를 사용 설정하라는 메시지가 표시되면 사용 설정을 클릭합니다.
Eventarc 트리거 패널에서 처음 몇 개의 필드가 다음과 같이 채워졌는지 확인하거나 필요한 경우 입력합니다.
- 트리거 유형: Google 소스
- 이벤트 제공자: Cloud Pub/Sub
- 이벤트:
google.cloud.pubsub.topic.v1.messagePublished
Cloud Pub/Sub 주제 선택 필드에서 기존 주제를 선택하거나 새 주제 만들기를 클릭하여 새 주제를 만듭니다. 함수가 이 주제를 구독합니다. 이후에 필요하므로 주제 이름을 적어둡니다.
- 메시지가 표시되면 부여를 클릭하여 Pub/Sub 서비스가 함수를 트리거하는 데 필요한 ID 토큰을 만들도록 허용합니다. 앞서 함수에서 인증 필요를 선택했음을 기억하세요. Pub/Sub에서는 필요한 인증을 위해 ID 토큰을 사용합니다.
서비스 계정 필드에서 새 서비스 계정 만들기를 클릭합니다.
서비스 계정의 이름을 입력하고 만들기를 클릭합니다. Eventarc는 이 서비스 계정을 사용하여 Pub/Sub 서비스에서 ID 토큰으로 함수를 호출합니다.
이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 섹션에서 Cloud Run 호출자 역할을 선택합니다. 그러면 서비스 계정에 2세대 함수를 호출할 수 있는 권한이 부여됩니다.
완료를 클릭합니다.
실패 시 재시도를 선택하지 않은 상태로 둡니다. 트리거 저장을 클릭합니다.
런타임, 빌드, 연결, 보안 설정 섹션을 펼치고 런타임 탭을 선택합니다.
런타임 서비스 계정의 서비스 계정 필드에서 만들기를 클릭합니다. 생성 계정 흐름이 새 탭에서 열립니다. 이 서비스 계정은 Cloud 함수가 실행될 때 갖는 ID입니다.
- 서비스 계정의 이름을 입력합니다.
- 만들고 계속하기를 클릭합니다.
- 완료를 클릭합니다.
Google Cloud 콘솔의 서비스 계정 페이지로 리디렉션됩니다. 탭을 닫을 수 있습니다.
함수 생성 페이지의 서비스 계정 필드로 돌아가서 새로고침을 클릭한 다음 방금 만든 서비스 계정을 선택합니다.
다음을 클릭합니다. 필요한 API를 사용 설정하라는 메시지가 표시되면 사용 설정을 클릭합니다.
기본 언어 및 샘플 코드를 수정하지 마세요. 이 코드는 클라우드 서비스를 사용하지 않으며 추가 권한을 사용 설정할 필요가 없습니다. 배포를 클릭합니다.
Cloud Scheduler 작업 만들기
Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.
작업 만들기를 클릭합니다.
필요에 따라 작업을 실행할 리전을 선택합니다.
작업에 이름을 지정하고 필요 시 설명을 추가합니다.
unix-cron 형식을 사용하여 작업의 빈도를 지정합니다.
30 16 * * 7
자세한 내용은 크론 작업 일정 구성을 참조하세요.
시간대를 선택합니다.
계속을 클릭합니다.
실행 구성 섹션에서 Pub/Sub를 대상 유형으로 선택합니다.
주제 이름을 선택합니다.
대상으로 전송될 간략한 메시지 문자열을 추가합니다.
만들기를 클릭합니다.
이제 일요일 오후 4시 30분에 Pub/Sub 주제로 메시지를 보내는 크론 작업이 있습니다. Cloud Function이 그 주제에 등록되었습니다.
작업 실행
이제 만든 작업을 실행할 수 있습니다.
Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.
만든 작업을 선택합니다.
강제 실행을 클릭합니다.
프로젝트에 만들어진 첫 번째 작업은 필수 구성 때문에 처음 호출되면 실행하는 데 몇 분이 소요될 수 있습니다.
마지막 실행 상태 열을 확인합니다. 작업이 실행되면 이 열은 '성공'으로 표시됩니다.
수고하셨습니다. 지금까지 Console을 사용해서 Pub/Sub로 메시지를 전송하는 크론 작업 실행 결과를 확인했습니다. 이제 Cloud Function이 실제로 실행되었는지 확인하는 방법을 알아보겠습니다.
Cloud Functions에서 결과 확인
Cloud 함수가 크론 작업에 의해 성공적으로 트리거되고 있는지 확인하려면 다음 안내를 따르세요.
Google Cloud Console에서 Cloud Functions 페이지로 이동합니다.
함수 이름을 클릭합니다.
함수 세부정보 페이지가 열립니다. 호출/초 그래프에는 함수의 첫 번째 호출이 표시됩니다. 호출에 대한 세부정보를 보려면 로그를 클릭합니다.
수고하셨습니다. 함수가 실행되었습니다.
삭제
이 가이드에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.
Cloud 스케줄러 작업 삭제
Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.
작업 옆의 체크박스를 선택합니다.
삭제를 클릭하고 삭제되었는지 확인합니다.
Pub/Sub 주제 삭제
Google Cloud 콘솔에서 Cloud Pub/Sub 페이지로 이동합니다.
주제 옆에 있는 체크박스를 선택합니다.
삭제를 클릭하고 삭제되었는지 확인합니다.
Cloud Functions 함수 삭제
Google Cloud Console에서 Cloud Functions 페이지로 이동합니다.
함수 옆에 있는 체크박스를 선택합니다.
삭제를 클릭하고 삭제되었는지 확인합니다.
서비스 계정 삭제
Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.
만든 서비스 계정 옆에 있는 체크박스를 선택합니다.
삭제를 클릭하고 삭제되었는지 확인합니다.
API 사용 중지
이 튜토리얼을 따르는 과정에서 API(예: Eventarc, Cloud Functions 또는 Pub/Sub API)를 사용 설정한 경우 이를 사용 중지합니다. API를 사용 중지하면 프로젝트의 API에 대한 액세스에 영향을 미치므로 프로젝트의 다른 리소스에서 API를 사용하는 경우 사용 중지하지 않습니다.
Google Cloud 콘솔에서 API 및 서비스 페이지로 이동합니다.
사용 중지할 API를 클릭합니다. API를 설명하는 페이지가 나타납니다.
API 사용 중지를 클릭합니다.
프로젝트 삭제
이 가이드를 위해서만 프로젝트를 만든 경우
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.