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 ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
    • プロジェクトを作成する 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 と Pub/Sub API を有効にします。

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

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。

    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 ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
    • プロジェクトを作成する 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 と Pub/Sub API を有効にします。

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

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。

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

次のステップ