크론 작업 관리

Pub/Sub 대상

Pub/Sub 대상 유형을 선택한 경우 다음 안내를 따르세요.

  1. 작업을 게시할 주제의 이름을 지정합니다. 이것은 프로젝트에서 이미 설정한 Pub/Sub 주제입니다.

  2. 이 주제에 전송할 메시지를 지정합니다. Pub/Sub 메시지 내 data 매개변수로 전송됩니다. 이를 수행하는 예시는 빠른 시작을 참조하세요.

  3. 필요한 메시지 속성을 추가합니다.

  4. Configure optional settings 섹션을 사용하여 추가 구성을 설정합니다.

Cloud Scheduler는 메시지를 Google API 서비스 계정으로 이 주제에 게시합니다.

App Engine HTTP 대상

App Engine HTTP 대상 유형을 선택한 경우 App Engine 앱 및 현재 프로젝트와 연결된 리전을 사용해야 합니다. 현재 프로젝트 밖에 있는 다른 App Engine 앱을 사용하려면 대상으로 HTTP가 아닌 HTTP를 선택합니다. 대상 방화벽 규칙은 0.1.0.2/32 IP 범위의 요청을 허용해야 합니다.

형식을 다음과 같이 설정합니다.

  1. 대상 유형 목록에서 App Engine HTTP를 선택합니다.

  2. Cloud Scheduler 작업의 핸들러를 실행하는 App Engine 서비스의 이름을 지정합니다. 지정하지 않으면 default 서비스로 간주됩니다. 설정하려면 Google Cloud 콘솔에서 서비스 이름을 찾으면 됩니다.

  3. 필요 시, 버전을 지정합니다. 설정하지 않으면 현재 제공되고 있는 버전이 사용됩니다. Google Cloud 콘솔에서 사용 가능한 버전을 찾을 수 있습니다.

  4. 필요 시, 인스턴스를 지정합니다. 설정하지 않으면 사용 가능한 인스턴스가 사용될 수 있습니다. Google Cloud 콘솔에서 사용 가능한 버전을 찾을 수 있습니다.

  5. 작업에서 연결할 App Engine 엔드포인트의 상대 URL을 지정합니다. 기본값 /를 사용하는 경우 작업에서 PROJECT-ID.appspot.com을 사용됩니다. 여기서 PROJECT-ID는 현재 프로젝트 ID입니다.

  6. 작업이 실행될 때 사용하려는 HTTP 메서드를 설정합니다. 기본값은 POST입니다.

  7. 필요한 헤더를 요청에 추가합니다.

  8. 선택적으로 대상으로 전송할 본문 데이터를 지정합니다. 이 데이터는 POST 또는 PUT HTTP 메서드를 선택할 때 요청 본문에서 바이트로 전송됩니다.

타겟팅된 App Engine 엔드포인트는 같은 프로젝트에 있어야 하며 app.yaml 파일의 handlers 요소에서 login: admin으로 보호될 수 있습니다.

HTTP 대상

HTTP 대상 유형을 선택한 경우 다음 안내를 따르세요.

  1. 작업에서 연결할 엔드포인트의 정규화된 URL을 지정합니다.

  2. HTTP 메서드를 지정합니다. 기본값은 POST입니다.

  3. 필요 시, 대상으로 전송할 데이터를 지정합니다. 이 데이터는 POST 또는 PUT HTTP 메서드를 선택할 때 요청 본문에서 바이트로 전송됩니다.

  4. 필요한 헤더를 추가합니다.

  5. 인증이 필요한 HTTP 대상 작업을 만들려면 HTTP 대상에 인증 사용을 참조하세요.

타겟팅된 HTTP 엔드포인트에 공개적으로 액세스할 수 있어야 합니다.

Cloud Scheduler를 사용하여 반복되는 일부 일정대상(작업 주기 또는 빈도라고도 함)으로 전송되는 예약 작업 단위(크론 작업이라고 함)를 설정할 수 있습니다.

작업 인스턴스는 한 번에 하나만 실행해야 합니다. 드물지만 동일한 작업의 인스턴스 여러 개가 요청될 수도 있습니다. 따라서 요청 핸들러는 멱등적이어야 하며 이러한 경우가 발생해도 유해한 부작용이 없도록 코드를 작성해야 합니다.

Cloud Scheduler는 반복 작업에 사용됩니다. 작업을 한 번만 실행해야 하는 경우에는 최대 30일까지 미리 태스크를 예약할 수 있는 Cloud Tasks를 사용하는 것이 좋습니다.

시작하기 전에

Cloud Scheduler의 환경을 설정했는지 확인합니다.

대상 유형 선택

Cloud Scheduler는 다음 유형의 대상을 호출할 수 있습니다.

내부 인그레스로 제한된 대상 서비스 호출

Cloud Scheduler는 내부적으로 다음 서비스를 호출할 수 있습니다.

  • Cloud Run 함수
  • Cloud Run(커스텀 도메인이 아닌 run.app URL)

이러한 대상을 내부적으로 호출하려면 해당 대상이 Cloud Scheduler 작업과 동일한 Google Cloud 프로젝트 또는 VPC 서비스 제어 경계에 있어야 합니다.

인그레스를 제한하여 대상 보안에 대해 자세히 알아보려면 인그레스 제한(Cloud Run용) 및 네트워크 설정 구성(Cloud Run 함수용)을 참조하세요.

작업 만들기

Google Cloud 콘솔이나 Google Cloud CLI를 사용하여 작업을 만들 수 있습니다.

콘솔

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

    Cloud Scheduler로 이동

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

  3. 이름 필드에 프로젝트에 고유한 작업 이름을 입력합니다.

    연결된 작업을 삭제하면 프로젝트에서 작업 이름을 다시 사용할 수 있습니다.

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

    App Engine HTTP 대상을 사용하는 경우 App Engine 앱과 동일한 리전을 선택해야 합니다. 자세한 내용은 대상별 지원되는 리전을 참조하세요.

  5. 필요 시 그 작업이 어떤 일을 하는지와 같이 작업에 관한 간략한 설명을 제시합니다.

    이 설명은 콘솔에서 작업 이름 옆에 표시됩니다.

  6. 구성 문자열을 사용하여 작업이 실행되는 빈도를 지정합니다.

    예를 들어 0 1 * * 0 문자열은 매주 일요일 새벽 1시에 작업을 한 번 실행합니다. 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 자세한 내용은 크론 작업 일정 구성을 참조하세요.

  7. 시간대 목록에서 작업 일정에 사용할 시간대를 선택합니다.

  8. 계속을 클릭합니다.

  9. 대상 유형을 지정합니다.

    • HTTP

    • Pub/Sub: 프로젝트에 이미 설정되어 있고 작업을 게시할 Pub/Sub 주제의 이름을 지정해야 합니다.

    • App Engine HTTP: App Engine 앱 및 현재 프로젝트와 연결된 리전을 사용해야 합니다.

  10. 계속을 클릭합니다.

  11. 필요한 경우 재시도 동작을 구성하려면 선택적 설정 구성을 클릭합니다. 지속 시간을 지정하려면 다음과 같은 단위 서픽스가 있는 음수가 아닌 일련의 정수를 사용하세요.

    • h - 시
    • m - 분
    • s - 초
    • ms - 밀리초
    • us - 마이크로초
    • ns - 나노초

    음수 및 분수 값은 허용되지 않습니다. Max retry duration 필드는 h ,m, s 값만 지원합니다. Min backoff durationMax backoff duration 모두 전체 집합을 지원합니다.

  12. 필요한 경우 HTTP 대상과 App Engine HTTP 대상에 작업 시도 기한을 구성합니다. 요청 핸들러가 이 기한까지 응답하지 않으면 요청이 취소되고 시도가 실패로 표시됩니다. Cloud Scheduler에서 재시도 구성에 따라 작업을 재시도합니다.

  13. 작업을 만들고 저장하려면 만들기를 클릭합니다.

    이제 작업이 지정된 빈도로 실행됩니다.

gcloud

gcloud CLI를 사용하여 작업을 만드는 경우 대상 유형마다 다른 명령어를 사용합니다.

HTTP

HTTP 또는 HTTPS 엔드포인트에 요청을 전송할 수 있습니다. 타겟팅된 HTTP 엔드포인트에 공개적으로 액세스할 수 있어야 합니다.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

다음을 바꿉니다.

  • JOB: 프로젝트에서 고유해야 하는 작업 이름입니다. 연결된 작업을 삭제하더라도 프로젝트에서 작업 이름을 다시 사용할 수 없습니다.

  • LOCATION: 작업이 실행되는 위치입니다.

  • SCHEDULE: 작업이 실행되는 빈도 또는 작업 간격입니다(예: every 3 hours). 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.

    자세한 내용은 크론 작업 일정 구성을 참조하세요.

  • URI: 작업에서 연결할 엔드포인트의 정규화된 URI입니다.

다른 매개변수는 gcloud 명령줄 참조에 설명되어 있습니다.

  • 필요 시, HTTP 메서드를 지정합니다. 기본값은 POST입니다.

  • 필요 시, 대상으로 전송할 데이터를 지정합니다. 이 데이터는 POST 또는 PUT HTTP 메서드를 선택할 때 요청 본문에서 바이트로 전송됩니다.

  • 필요한 경우 오류 발생 시 App Engine 작업이 재시도되는 방법을 지정하는 재시도 값을 설정합니다. 대부분의 경우 기본값으로 충분합니다.

  • 인증이 필요한 HTTP 대상 작업을 만들려면 HTTP 대상에 인증 사용을 참조하세요.

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

프로젝트에 이미 설정한 Pub/Sub 주제를 사용해야 합니다. Cloud Scheduler는 이 주제에 메시지를 Google API 서비스 계정으로 게시합니다.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

다음을 바꿉니다.

  • JOB: 프로젝트에서 고유해야 하는 작업 이름입니다. 연결된 작업을 삭제하더라도 프로젝트에서 작업 이름을 다시 사용할 수 없습니다.

  • LOCATION: 작업이 실행되는 위치입니다.

  • SCHEDULE: 작업이 실행되는 빈도 또는 작업 간격입니다(예: every 3 hours). 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.

    자세한 내용은 크론 작업 일정 구성을 참조하세요.

  • TOPIC: 작업을 게시할 주제의 이름입니다. --message-body 또는 --message-body-from-file 플래그를 사용하여 주제로 전송할 메시지를 지정합니다. Pub/Sub 메시지 내 data 매개변수로 전송됩니다. 이를 수행하는 예시는 빠른 시작을 참조하세요.

다른 매개변수는 gcloud 명령줄 참조에 설명되어 있습니다.

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

App Engine HTTP

App Engine HTTP 대상은 현재 프로젝트와 연결된 App Engine 앱에서만 사용 가능합니다. 현재 프로젝트 이외에 다른 App Engine 앱을 사용하려면 App Engine HTTP가 아닌 HTTP를 대상으로 선택합니다. 대상 방화벽 규칙은 0.1.0.2/32 IP 범위의 요청을 허용해야 합니다.

App Engine 엔드포인트는 app.yaml 파일의 handlers 요소에서 login: admin으로 보호될 수 있습니다.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

다음을 바꿉니다.

  • JOB: 프로젝트에서 고유해야 하는 작업 이름입니다. 연결된 작업을 삭제하더라도 프로젝트에서 작업 이름을 다시 사용할 수 없습니다.

  • LOCATION: 작업이 실행되는 위치입니다. App Engine 앱의 위치와 동일해야 합니다.

  • SCHEDULE: 작업이 실행되는 빈도 또는 작업 간격입니다(예: every 3 hours). 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.

    자세한 내용은 크론 작업 일정 구성을 참조하세요.

다른 매개변수는 gcloud 명령줄 참조에 설명되어 있습니다.

  • 작업에서 연결할 App Engine 엔드포인트의 상대 URL을 지정합니다. 기본값 /를 사용하는 경우 작업에서 PROJECT-ID.appspot.com을 사용됩니다. 여기서 PROJECT-ID는 현재 프로젝트 ID입니다.

  • Cloud Scheduler 작업의 핸들러를 실행하는 App Engine 서비스의 이름을 지정합니다. 지정하지 않으면 default 서비스로 간주됩니다. 설정하려면 Google Cloud 콘솔에서 서비스 이름을 찾으면 됩니다.

  • 필요 시, 작업이 실행될 때 사용하려는 HTTP 메서드를 설정합니다. 기본값은 POST입니다.

  • 필요 시, 버전을 지정합니다. 설정하지 않으면 현재 제공되고 있는 버전이 사용됩니다. Google Cloud 콘솔에서 사용 가능한 버전을 찾을 수 있습니다.

  • 필요 시, 인스턴스를 지정합니다. 설정하지 않으면 사용 가능한 인스턴스가 사용될 수 있습니다. Google Cloud 콘솔에서 사용 가능한 버전을 찾을 수 있습니다.

  • 필요 시, 대상으로 전송할 데이터를 지정합니다. 이 데이터는 POST 또는 PUT HTTP 메서드를 선택할 때 요청 본문에서 바이트로 전송됩니다.

  • 필요한 경우 오류 발생 시 App Engine 작업이 재시도되는 방법을 지정하는 재시도 값을 설정합니다. 대부분의 경우 기본값으로 충분합니다.

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

작업 수정

작업 구성을 수정할 수 있습니다.

콘솔

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

    Cloud Scheduler로 이동

  2. 수정할 작업을 선택합니다.

  3. 수정을 클릭합니다.

  4. 작업을 만들 때 일정을 정의하는 단계를 수행하고 실행을 구성한 후 선택적 설정을 구성합니다.

gcloud

gcloud CLI를 사용하여 작업을 수정하는 경우 대상 유형마다 서로 다른 명령어를 사용합니다.

HTTP

HTTP 또는 HTTPS 엔드포인트에 요청을 전송할 수 있습니다. 타겟팅된 HTTP 엔드포인트에 공개적으로 액세스할 수 있어야 합니다.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

다음을 바꿉니다.

  • JOB: 프로젝트에서 고유해야 하는 작업 이름입니다. 연결된 작업을 삭제하더라도 프로젝트에서 작업 이름을 다시 사용할 수 없습니다.

  • LOCATION: 작업이 실행되는 위치입니다. 위치를 지정하지 않으면 gcloud CLI는 기본 위치를 사용합니다. 수정할 작업이 다른 위치에 있는 경우 작업을 식별하려면 NAME 외에도 위치를 지정해야 합니다. 작업 위치는 업데이트할 수 없습니다.

  • SCHEDULE: 작업이 실행되는 빈도 또는 작업 간격입니다(예: every 3 hours). 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.

    자세한 내용은 크론 작업 일정 구성을 참조하세요.

  • URI: 작업에서 연결할 엔드포인트의 정규화된 URI입니다.

다른 매개변수는 gcloud 명령줄 참조에 설명되어 있습니다.

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

프로젝트에 이미 설정한 Pub/Sub 주제를 사용해야 합니다. Cloud Scheduler는 이 주제에 메시지를 Google API 서비스 계정으로 게시합니다.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

다음을 바꿉니다.

  • JOB: 프로젝트에서 고유해야 하는 작업 이름입니다. 연결된 작업을 삭제하더라도 프로젝트에서 작업 이름을 다시 사용할 수 없습니다.

  • LOCATION: 작업이 실행되는 위치입니다. 위치를 지정하지 않으면 gcloud CLI는 기본 위치를 사용합니다. 수정할 작업이 다른 위치에 있는 경우 작업을 식별하려면 NAME 외에도 위치를 지정해야 합니다. 작업 위치는 업데이트할 수 없습니다.

  • SCHEDULE: 작업이 실행되는 빈도 또는 작업 간격입니다(예: every 3 hours). 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.

    자세한 내용은 크론 작업 일정 구성을 참조하세요.

  • TOPIC: 작업을 게시할 주제의 이름입니다. --message-body 또는 --message-body-from-file 플래그를 사용하여 주제로 전송할 메시지를 지정합니다. Pub/Sub 메시지 내 data 매개변수로 전송됩니다. 이를 수행하는 예시는 빠른 시작을 참조하세요.

다른 매개변수는 gcloud 명령줄 참조에 설명되어 있습니다.

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

App Engine HTTP

App Engine HTTP 대상은 현재 프로젝트와 연결된 App Engine 앱에서만 사용 가능합니다. 현재 프로젝트 이외에 다른 App Engine 앱을 사용하려면 App Engine HTTP가 아닌 HTTP를 대상으로 선택합니다.

App Engine 엔드포인트는 app.yaml 파일의 handlers 요소에서 login: admin으로 보호될 수 있습니다.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

다음을 바꿉니다.

  • JOB: 프로젝트에서 고유해야 하는 작업 이름입니다. 연결된 작업을 삭제하더라도 프로젝트에서 작업 이름을 다시 사용할 수 없습니다.

  • LOCATION: 작업이 실행되는 위치(대상 App Engine 앱의 위치와 동일)입니다. 위치를 지정하지 않으면 gcloud CLI는 기본 위치를 사용합니다. 수정할 작업이 다른 위치에 있는 경우 작업을 식별하려면 NAME 외에도 위치를 지정해야 합니다. 작업 위치는 업데이트할 수 없습니다.

  • SCHEDULE: 작업이 실행되는 빈도 또는 작업 간격입니다(예: every 3 hours). 여기에 제공하는 문자열은 unix-cron 호환 문자열일 수 있습니다. 더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.

    자세한 내용은 크론 작업 일정 구성을 참조하세요.

다른 매개변수는 gcloud 명령줄 참조에 설명되어 있습니다.

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

작업 일시중지

작업 실행을 일시중지할 수 있습니다.

콘솔

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

    Cloud Scheduler로 이동

  2. 일시중지할 작업을 선택합니다.

  3. 일시중지를 클릭합니다.

gcloud

  1. gcloud CLI를 설치한 머신에서 터미널 창을 엽니다.

  2. 다음 명령어를 실행합니다.

     gcloud scheduler jobs pause MY_JOB
    

    MY_JOB을 일시중지할 작업의 이름으로 바꿉니다.

작업이 일시중지된 상태에서 수정할 수도 있습니다. 작업을 수정하면 재개할 때까지 작업이 일시 중지된 상태로 유지됩니다.

작업 재개

일시중지된 작업 실행을 재개할 수 있습니다.

콘솔

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

    Cloud Scheduler로 이동

  2. 재개할 작업을 선택합니다.

    작업이 이미 일시중지되어 있어야 합니다.

  3. 재개를 클릭합니다.

gcloud

  1. gcloud CLI를 설치한 머신에서 터미널 창을 엽니다.

  2. 다음 명령어를 실행합니다.

     gcloud scheduler jobs resume MY_JOB
    

    MY_JOB을 재개할 작업의 이름으로 바꿉니다.

작업 삭제

작업을 삭제할 수 있습니다.

콘솔

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

    Cloud Scheduler로 이동

  2. 삭제할 작업을 선택합니다.

  3. 삭제를 클릭합니다.

gcloud

  1. gcloud CLI를 설치한 머신에서 터미널 창을 엽니다.

  2. 다음 명령어를 실행합니다.

     gcloud scheduler jobs delete MY_JOB
    

    MY_JOB을 삭제할 작업의 이름으로 바꿉니다.