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

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

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

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

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

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分も差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Google Cloud プロジェクトを作成または選択します。

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトを選択する際に、特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者のロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  7. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  8. Cloud Scheduler API と Pub/Sub API を有効にします(まだ有効になっていない場合)。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  9. Google Cloud CLI をインストールします。

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. Google Cloud プロジェクトを作成または選択します。

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトを選択する際に、特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者のロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  13. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  14. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  15. Cloud Scheduler API と Pub/Sub API を有効にします(まだ有効になっていない場合)。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

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

必要なロール

このクイックスタートを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

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-east1" \
    --message-body="Hello world"

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

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

ジョブを実行する

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

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

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

次に、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 プロジェクトを削除します。

    Google Cloud プロジェクトを削除する:

    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 に置き換えます。

次のステップ