이벤트 기반 Cloud 함수 예약


이 튜토리얼에서는 Cloud Scheduler를 사용하고 Pub/Sub 주제를 타겟팅하여 이벤트 기반 Cloud 함수를 트리거하는 방법을 보여줍니다. Pub/Sub 주제에 대한 메시지 또는 Cloud Storage 버킷의 변경사항 등 Google Cloud 프로젝트 내에서 이벤트에 대한 응답으로 함수를 직접 트리거해야 하는 경우 이벤트 기반 함수를 사용합니다.

함수의 HTTP 엔드포인트를 타겟팅하여 HTTP 함수를 예약할 수도 있습니다. 함수가 URL 엔드포인트를 포함하고 웹훅과 같은 HTTP 요청에 응답하도록 하려면 HTTP 함수를 사용합니다. 자세한 내용은 Cloud Functions 유형을 참조하세요.

Cloud 함수 실행 예약은 Cloud Scheduler의 일반적인 사용 사례입니다. 이 가이드에서는 다음 단계를 진행합니다.

  1. Pub/Sub 주제를 구독하는 간단한 Cloud 함수를 만듭니다.
  2. Pub/Sub 주제에 메시지를 게시하는 Cloud Scheduler 작업을 만듭니다.
  3. Cloud 스케줄러 작업을 실행합니다.
  4. Cloud 함수가 Cloud Scheduler 작업에 의해 트리거되었는지 확인합니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. API Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc 사용 설정

    API 사용 설정

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  8. API Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc 사용 설정

    API 사용 설정

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. Cloud Functions(2세대)에서는 기본 Cloud Run 서비스를 관리하여 호출 권한을 사용할 수 있으므로 Cloud Run 호출자 역할을 부여해야 합니다.

  11. 기본적으로 Cloud Functions는 런타임 서비스 계정에 자동으로 생성된 기본 Compute Engine 서비스 계정을 사용합니다. 이 서비스 계정을 사용하여 이 튜토리얼을 사용해 볼 수 있습니다. 그러나 조직 정책 구성에 따라 프로젝트에 대한 편집자 역할이 기본 서비스 계정에 자동으로 부여되지 않을 수 있습니다. 이러한 경우 다음 역할을 서비스 계정에 부여해야 합니다.
    1. Artifact Registry 작성자(roles/artifactregistry.writer)
    2. 로그 작성자(roles/logging.logWriter)
    3. 스토리지 객체 뷰어(roles/storage.objectViewer)

이벤트 기반 Cloud 함수 만들기

Google Cloud 프로젝트 내에서 이벤트에 대한 응답으로 직접 트리거되는 이벤트 기반 함수를 만듭니다. 이 경우에는 메시지가 Pub/Sub 주제에 게시됩니다.

  1. Google Cloud 콘솔에서 Cloud Functions 페이지로 이동합니다.

    Cloud Functions로 이동

  2. 함수 만들기를 클릭합니다.

  3. 기본사항 섹션에서 다음을 수행합니다.

    1. 환경 목록에서 2세대를 선택합니다.
    2. 함수의 이름을 입력합니다.
    3. 리전 목록에서 리전을 선택합니다.
  4. 트리거 섹션에서 다음을 수행합니다.

    1. 트리거 유형 목록에서 Cloud Pub/Sub를 선택합니다.
    2. Cloud Pub/Sub 주제 목록에서 기존 주제를 선택하거나 주제 만들기를 클릭해 새 주제를 만듭니다. 이후 단계에서 필요하므로 주제 이름을 기록해 둡니다.
    3. 옵션 더보기를 클릭합니다.

      Eventarc 트리거 패널이 열립니다.

  5. Eventarc 트리거 패널에서 다음을 수행합니다.

    1. Pub/Sub 서비스가 함수를 호출하는 데 필요한 ID 토큰을 만들도록 허용하라는 메시지가 표시되면 부여를 클릭합니다.
    2. 서비스 계정 목록에서 이전에 만든 서비스 계정을 선택합니다.
    3. 다른 기본값을 수락합니다.
    4. 트리거 저장을 클릭합니다.

      Eventarc 트리거 패널이 닫힙니다.

  6. 다른 기본값을 그대로 두고 다음을 클릭합니다.

  7. 기본 런타임 언어 및 샘플 코드를 수정하지 마세요. 이 코드는 클라우드 서비스를 사용하지 않으며 추가 권한을 사용 설정할 필요가 없습니다. 배포를 클릭합니다.

Cloud Scheduler 작업 만들기

Pub/Sub 대상으로 Cloud Scheduler 작업을 만듭니다.

  1. Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.

    Cloud Scheduler로 이동

  2. 작업 만들기를 클릭합니다.

  3. 작업의 이름을 입력합니다.

  4. 리전 목록에서 리전을 선택합니다.

  5. unix-cron 형식을 사용하여 작업의 빈도를 지정합니다.

    30 16 * * 7
    

    자세한 내용은 크론 작업 형식 및 시간대를 참조하세요.

  6. 시간대 목록에서 시간대를 선택합니다.

  7. 계속을 클릭합니다.

  8. 대상 유형 목록에서 Pub/Sub를 선택합니다.

  9. 앞에서 만든 Pub/Sub 주제를 선택합니다.

  10. 메시지 본문 필드에 Pub/Sub 대상 주제로 전송할 문자열을 입력합니다. 'Hello world!'를 예로 들 수 있습니다.

  11. 만들기를 클릭합니다.

일요일 오후 4시 30분에 Pub/Sub 주제로 메시지를 보내는 크론 작업을 만들었습니다. Cloud 함수가 해당 주제를 구독합니다.

Cloud Scheduler 작업 실행

이제 만든 작업을 실행할 수 있습니다.

  1. Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.

    Cloud Scheduler로 이동

  2. 자신이 만든 작업의 체크박스를 선택하고 강제 실행을 클릭합니다.

    처음 호출될 때는 프로젝트에서 만든 첫 번째 작업을 구성하고 실행하는 데 몇 분 정도 걸릴 수 있습니다.

  3. 작업이 실행된 후 마지막 실행 상태Success가 표시됩니다.

Cloud Functions에서 결과 확인

Cloud 함수가 성공적으로 트리거되고 크론 작업에 의해 실행되는지 확인할 수 있습니다.

  1. Google Cloud 콘솔에서 Cloud Functions 페이지로 이동합니다.

    Cloud Functions로 이동

  2. 함수 이름을 클릭합니다.

    함수 세부정보 페이지가 열리고 호출/초 그래프에 함수의 첫 번째 호출이 표시됩니다.

  3. 로그 탭을 클릭합니다.

    Hello, YOUR_STRING!과 비슷한 로그 항목이 표시됩니다.

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

튜토리얼 리소스 삭제

  1. Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.

    Cloud Scheduler로 이동

  2. 작업 옆의 체크박스를 선택합니다.

  3. 삭제를 클릭하고 삭제되었는지 확인합니다.

  4. Google Cloud 콘솔에서 Pub/Sub 페이지로 이동합니다.

    Pub/Sub로 이동

  5. 주제 옆에 있는 체크박스를 선택합니다.

  6. 삭제를 클릭하고 삭제되었는지 확인합니다.

  7. Google Cloud 콘솔에서 Cloud Functions 페이지로 이동합니다.

    Cloud Functions로 이동

  8. 함수 옆에 있는 체크박스를 선택합니다.

  9. 삭제를 클릭하고 삭제되었는지 확인합니다.

  10. Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  11. 자신이 만든 서비스 계정 옆에 있는 체크박스를 선택합니다.

  12. 삭제를 클릭하고 삭제되었는지 확인합니다.

다음 단계