Cloud Run のイベント ドリブン関数のスケジュールを設定する

このチュートリアルでは、Cloud Scheduler を使用して、Pub/Sub トピックをターゲットに設定し、Cloud Run のイベント ドリブン関数をトリガーする方法について説明します。Pub/Sub トピックのメッセージや Cloud Storage バケットの変更など、 Google Cloud プロジェクト内のイベントに応答して関数を直接トリガーする場合は、イベント ドリブン関数を使用します。

関数の HTTP エンドポイントをターゲットにして、HTTP 関数の実行スケジュールを設定することもできます。関数で URL エンドポイントを使用し、Webhook などの HTTP リクエストに応答する必要がある場合は、HTTP 関数を使用します。詳細については、Cloud Run 関数のタイプをご覧ください。

Cloud Run 関数の実行のスケジューリングは、Cloud Scheduler の一般的なユースケースです。このチュートリアルの内容は次のとおりです。

  1. Pub/Sub トピックをサブスクライブする単純な Cloud Run 関数を作成する。
  2. Pub/Sub トピックにメッセージを公開する Cloud Scheduler ジョブを作成する。
  3. Cloud Scheduler ジョブを実行する。
  4. Cloud Run 関数が Cloud Scheduler ジョブによってトリガーされたことを確認する。

Cloud Run のイベント ドリブン関数を作成する

Google Cloud プロジェクト内のイベント(この場合は Pub/Sub トピックに公開されたメッセージ)に応答して直接トリガーされるイベント ドリブン関数を作成します。

  1. Google Cloud コンソールで、[Cloud Run functions] ページに移動します。

    [Cloud Run 関数] に移動

  2. [関数を作成] をクリックします。

  3. [基本] セクションで、次の操作を行います。

    1. [環境] リストで [第 2 世代] を選択します。
    2. 関数の名前を入力します。
    3. [リージョン] リストでリージョンを選択します。
  4. [トリガー] セクションで、次の操作を行います。

    1. [トリガーのタイプ] リストで [Cloud Pub/Sub] を選択します。
    2. [Cloud Pub/Sub トピック] リストで、既存のトピックを選択するか、[トピックを作成] をクリックして新しいトピックを作成します。後の手順で必要になるため、トピックの名前をメモしておきます。
    3. [その他のオプション] をクリックします。

      [Eventarc トリガー] パネルが開きます。

  5. [Eventarc トリガー] パネルで、次の操作を行います。

    1. ファンクションの呼び出しに必要な ID トークンを Pub/Sub サービスが作成できるようにするよう求められたら、[付与] をクリックします。
    2. [サービス アカウント] リストで、以前に作成したサービス アカウントを選択します。
    3. 他の値はデフォルトを使用します。
    4. [トリガーを保存] をクリックします。

      [Eventarc トリガー] パネルが閉じます。

  6. その他のデフォルト値はそのままにして、[次へ] をクリックします。

  7. デフォルトのランタイム言語とサンプルコードは変更しないでください。このコードはクラウド サービスを使用せず、追加の権限を有効にする必要もありません。[デプロイ] をクリックします。

Cloud Scheduler ジョブを作成する

Pub/Sub ターゲットを使用して Cloud Scheduler ジョブを作成します。

  1. Google Cloud コンソールで [Cloud Scheduler] ページに移動します。

    Cloud Scheduler に移動

  2. [ジョブを作成] をクリックします。

  3. ジョブの名前を入力します。

  4. [リージョン] リストでリージョンを選択します。

  5. ジョブの頻度を unix-cron 形式で指定します。

    30 16 * * 7
    

    詳細については、cron ジョブの形式とタイムゾーンをご覧ください。

  6. [タイムゾーン] リストで、タイムゾーンを選択します。

  7. [続行] をクリックします。

  8. [ターゲット タイプ] リストで、Pub/Sub を選択します。

  9. 先ほど作成した Pub/Sub トピックを選択します。

  10. [メッセージ本文] フィールドに、Pub/Sub ターゲット トピックに送信する文字列を入力します。例: 「Hello world!」

  11. [作成] をクリックします。

日曜日の 16:30 に Pub/Sub トピックにメッセージを送信する cron ジョブが作成されました。Cloud Run 関数は、このトピックにサブスクライブされています。

Cloud Scheduler ジョブを実行する

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

  1. Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。

    Cloud Scheduler に移動

  2. 作成したジョブのチェックボックスをオンにして、[強制実行] をクリックします。

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

  3. ジョブの実行後、[最後の実行のステータス] に Success が表示されます。

Cloud Run 関数で結果を確認する

Cloud Run 関数が cron ジョブによって正常にトリガーされ、実行されていることを確認できます。

  1. Google Cloud コンソールで、Cloud Run functions ページに移動します。

    [Cloud Run 関数] に移動

  2. ファンクション名をクリックします。

    [関数の詳細] ページが開き、[Invocations/Second] グラフに関数の最初の呼び出しが表示されます。

  3. [Logs] タブをクリックします。

    Hello, YOUR_STRING! のようなログエントリが表示されます。