gcloud CLI を使用して cron ジョブをスケジュールして実行する

このクイックスタートでは、gcloud CLI を使用して Cloud Scheduler で基本的なオペレーションを行う方法について説明します。

このクイックスタートでは、以下の操作を行います。

  1. Cloud Scheduler ジョブ ターゲットとして設定する Pub/Sub トピックを作成します。
  2. Cloud Scheduler を使用して cron ジョブを作成し、ジョブの定期的なスケジュールを構成します。
  3. Job を実行します。
  4. ジョブが正常に実行されていることを確認します。

Cloud Scheduler には無料枠があり、このクイックスタートを実行しても費用は発生しません。詳細については、料金をご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Scheduler, Pub/Sub APIs:

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Cloud Scheduler, Pub/Sub APIs:

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com

Pub/Sub トピックとサブスクリプションを作成する

Pub/Sub トピックは、パブリッシャーがメッセージを送信できるリソースです。 トピックにパブリッシュされたメッセージを受信するには、そのトピックへのサブスクリプションを作成する必要があります。

  1. cron ジョブのターゲットとして使用する Pub/Sub トピックを設定します。

    gcloud pubsub topics create cron-topic
    

    これにより、cron-topic というトピックが作成されます。

  2. メッセージを受信してジョブの結果を表示するには、Pub/Sub サブスクリプションを作成します。

    gcloud pubsub subscriptions create cron-sub --topic cron-topic
    

Cloud Scheduler を使用して cron ジョブを作成する

gcloud scheduler jobs create pubsub コマンドを使用して、Cloud Storage の Pub/Sub ターゲットに定期的なスケジュールで送信される cron ジョブと呼ばれる作業単位を設定します。スケジュールは unix-cron に基づく形式で指定します。詳細については、cron ジョブの形式とタイムゾーンをご覧ください。

gcloud scheduler jobs create pubsub my-cron-job \
    --schedule="30 16 * * 7" \
    --topic=cron-topic \
    --location="us-central1" \
    --message-body="Hello world"

日曜日の 16:30 に Pub/Sub トピックに「Hello world」メッセージを送信するジョブを作成しました。

このジョブを実行できるようになりました。

ジョブを実行する

指定したスケジュールに沿ってジョブを実行するだけでなく、即時実行を強制的に行うこともできます。

gcloud scheduler jobs run my-cron-job --location="us-central1"

初期構成によっては、プロジェクトで作成された最初のジョブの実行に数分かかることがあります。

次に、Pub/Sub トピックがメッセージを受信したことを確認します。

Pub/Sub で結果を確認する

Pub/Sub トピックがジョブからメッセージを受け取ったことを確認する

  1. サブスクリプションから Pub/Sub メッセージを pull する

    gcloud pubsub subscriptions pull cron-sub --limit 5
    

    最初に pull されたメッセージがない場合は、コマンドを再実行します。

  2. ジョブの実行結果を表示します。出力は次のようになります。

    DATA: Hello world!
    MESSAGE_ID: 5028933846601543
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
    

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

または、このクイックスタート用に作成したリソースを削除します。

  1. cron ジョブを削除します。Cloud Shell または gcloud CLI をインストールしたマシンで、次のコマンドを実行します。

    gcloud scheduler jobs delete MY_JOB \
        --location="LOCATION"
    

    以下を置き換えます。

    • MY_JOB: 削除するジョブの名前。
    • LOCATION: ジョブのロケーション。デフォルトでは、現在のプロジェクトの App Engine アプリの場所を使用します(関連付けられたアプリが存在する場合)。
  2. Pub/Sub トピックを削除します。Cloud Shell または gcloud CLI をインストールしたマシンで、次のコマンドを実行します。

    gcloud pubsub topics delete TOPIC_ID
    

    TOPIC_ID は、削除する Pub/Sub トピックの ID に置き換えます。

  3. Pub/Sub サブスクリプションを削除します。Cloud Shell または gcloud CLI をインストールしたマシンで、次のコマンドを実行します。

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    

    SUBSCRIPTION_ID は、削除する Pub/Sub サブスクリプションの ID に置き換えます。

次のステップ