Cloud Scheduler를 사용하여 워크플로 예약

이 페이지에서는 Cloud Scheduler를 사용하여 매주 월요일 오전 9시마다 또는 15분마다와 같은 특정 일정으로 워크플로를 실행하는 방법을 설명합니다.

시작하기 전에

  1. 예약하려는 워크플로가 아직 없으면 워크플로를 만듭니다.
  2. Cloud Scheduler API를 사용 설정합니다.

    API 사용 설정

워크플로 예약

  1. Cloud Scheduler가 Workflows API에 요청을 보낼 수 있도록 서비스 계정을 만듭니다.

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    SERVICE_ACCOUNT_NAME을 6~30자 사이의 이름으로 바꿉니다. 소문자 영숫자 문자와 대시를 포함할 수 있습니다. 서비스 계정을 만든 후에는 이름을 변경할 수 없습니다.

  2. Cloud Scheduler 명령어를 실행할 계정에 서비스 계정 사용 권한을 부여합니다.

  3. 계정이 워크플로를 트리거할 수 있도록 새 서비스 계정에 workflows.invoker 역할을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_NAME \
      --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \
      --role roles/workflows.invoker

    다음을 바꿉니다.

    • PROJECT_NAME: Google Cloud 프로젝트 이름입니다.
    • SERVICE_ACCOUNT_NAME: 이전에 만든 서비스 계정의 이름입니다.
  4. 인증을 위해 이전에 만든 서비스 계정을 사용하여 워크플로를 트리거하는 Cloud Scheduler 작업을 만듭니다. 예를 들어 unix-cron 형식을 사용해 간격을 정의하여 워크플로가 5분마다 실행되도록 예약합니다.

    gcloud scheduler jobs create http JOB_NAME \
      --schedule="*/5 * * * *" \
      --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
      --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
      --time-zone="TIME_ZONE" \
      --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"

    다음을 바꿉니다.

    • JOB_NAME: Cloud Scheduler 작업에 제공하는 이름입니다.
    • PROJECT_NAME: Google Cloud 프로젝트 이름입니다.
    • REGION_NAME: 워크플로가 있는 리전입니다(예: us-central1).
    • WORKFLOW_NAME: 실행을 예약할 워크플로의 이름입니다.
    • DOUBLE_ESCAPED_JSON_STRING: 전달한 인수의 JSON 인코딩입니다. 따옴표로 묶인 문자열 내의 큰따옴표는 백슬래시(\)를 사용하여 이스케이프됩니다. 예를 들면 다음과 같습니다. --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • TIME_ZONE: 사용자가 제공한 일정을 해석하기 위해 Cloud Scheduler에서 사용되는 시간대입니다.
    • SERVICE_ACCOUNT_NAME: 이전에 만든 서비스 계정의 이름입니다.

    이제 워크플로가 5분마다 실행됩니다.

다음 단계