Cloud FunctionsをCloud Schedulerで呼び出し、バッチ処理を実行

Cloud FunctionsをCloud Schedulerで呼び出し、バッチ処理を実行

2019年11月18日
GCP

Pub/SubをトリガとしてCloud Functionsの関数をCloud Schedulerジョブで呼び出し、バッチ処理を実行する方法をご紹介します。

Cloud Schedulerによる自動スクレイピング構成図

今回は上記構成図でいう、Cloud SchedulerからCloud Functionsを実行する流れを紹介します。

 

Cloud SchedulerとCloud Functionsを経由するPub/Subトピックを作成

ナビゲーションメニューからPub/Subを選択します。

トピックを作成から新規でトピックを作成します。ここでは「sample」というトピックIDとしています。

暗号化は「Googleが管理する鍵」を選択し、「トピック作成」を押下します。

 

Cloud Functionsで関数を作成

ナビゲーションメニューからCloud Functionsを選択し、「関数を作成」を押下します。

関数の名前を入力します。ここでは「sample」としました。割り当てられるメモリは128MBから2GBまで選択することができます。

トリガーは「Cloud Pub/Sub」を選択し、トピックを先ほど作成した「sample」を選択します。

ソースコードはバッチで動かした処理を記述します。今回はバッチ処理で動かすことが目的なので、デフォルトのままにしておきます。

その他、リージョンやタイムアウトなども設定できます。

タイムアウトはデフォルト1分で最大9分まで延ばすことができます。

 

Cloud Schedulerでジョブを作成

ナビゲーションメニューからCloud Schedulerを選択し、「ジョブを作成」を押下します。

ジョブの名前と説明を入力します。頻度は以下の公式サイトを参考に入力します。今回は毎分で設定しています。

参考:

タイムゾーンは「日本標準時(JST)」を選択します。

ターゲットは「Pub/Sub」を選択し、トピックは先ほど作成した「sample」を入力します。

ペイロードはPub/Sub ターゲットに送信する文字列です。

 

Cloud SchedulerでCloud Functionsをバッチ処理してみる

ここまできたら、バッチ処理の準備完了です。

Cloud Schedulerのジョブが実行されたら、ログを確認してみましょう。

Cloud Functionsの作成した関数から「ログを表示」を押下します。すると以下のようにペイロードで渡した「sample message」がログに表示されているはずです。

これはCloud Schedulerのジョブで渡した「sample message」がPub/Subを経由して、Cloud Functionsで作成した関数の以下の処理でログを表示しています。

hello_pubsubの引数であるeventのevent[‘data’]にbase64でエンコードされた状態で格納されており、それをデコードしてprintしています。

 

以上、Cloud SchedulerでCloud Functionsをバッチ処理を実行する方法でした。

参考: