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 は、新しいサービスに設定する名前です。

  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 ジョブを作成します。たとえば、5 分おきにワークフローが実行されるようにスケジュールするには(unix-cron 形式を使用して間隔を定義します):

    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" \
      --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 は、実行をスケジュール設定するワークフローの名前です。
    • TIME_ZONE は、指定したスケジュールを Cloud Scheduler で解釈するために使用するタイムゾーンです。
    • SERVICE_ACCOUNT_NAME は、以前に作成したサービス アカウントの名前です。

    これで、ワークフローは 5 分ごとに実行されるようになります。

次のステップ