ウェブサイト検索

GCPクラウドファンクションをクラウドスケジューラーで定期的に実行する方法


定期的にコードを実行したい場合、cronジョブのように、Google Cloud PlatformのCloud Schedulerを使用して、実際のサーバーを使用せずに、固定した時間間隔でサーバーレスのCloud Functionsを自動的に実行することができます。

クラウドスケジューラーとは何ですか?

Cloud Schedulerは「管理されたCronサービス」として自らを宣伝しています。これは、cron構文を使用してタスクをスケジュールすることを可能にします。しかし、Cloud Schedulerはcronのスケジューリングコンポーネントのみを置き換えるもので、計算サービスではありません。また、HTTPリクエストを送信したり、pub/subメッセージを送信することしかできないため、それ自体ではかなり範囲が限られています。

スケジューラーの最も便利なアプリケーションの一つは、クラウドファンクションを定期的にトリガーすることです。クラウドファンクションは、Node.jsのJavaScript、Python、またはJavaなどのさまざまなランタイムを使用して、サーバーなしでコードを実行します。クラウドスケジューラーが送信できるPub/Sub通知からトリガーするようにクラウドファンクションを設定できるので、cron構文を使用して定期的にサーバーレスコードを実行できるシステムを構築できます。

実行する必要のあるコードが特定のサーバーで実行される必要がある場合、最良の選択は依然としてローカルのcronを使用して必要なスクリプトを実行することです。しかし、JavaScript/Pythonでスクリプトを作成でき、関数の実行環境にこだわらないのであれば、Cloud Functionsはサーバーを設定することなくうまく処理します。

スケジュールされた関数の設定

Cloud Functionsコンソールに移動して、関数をセットアップしてください。新しい関数を作成する必要はなく、既存の関数を編集してPub/Subメッセージから実行することができます。

名前を付け、割り当てるRAMの量を選択し、トリガーを「Cloud Pub/Sub」に切り替えます。

関数がサブスクライブするために、Pub/Subトピックを選択するか作成する必要があります。

名前を付けて、「トピックを作成」をクリックしてください。

それが完了したら、コードをアップロードできます。インラインで貼り付けるか、ZIPファイルをアップロードするか、Cloud Sourceリポジトリにリンクすることができます。

Cloud Schedulerコンソールに移動して、cronジョブを作成してください。

名前を付けて、cron構文を使って頻度を設定してください。cronに関するガイドを読むか、このオンラインツールを使ってスケジュール設定を手伝ってもらうことができます。一般的な構文は次のようになります:

minute hour day month weekday

ターゲットをPub/Subに設定し、関数用に作成したトピック名を入力します。

この関数は自動的に実行されるはずですが、テストするためにCloud Schedulerから「今すぐ実行」をクリックできます。また、このパネルから以前の実行のログを表示することもできます。

関数が正しく実行されていない場合は、Cloud Functionのログを確認して、リクエストに応答しているかどうかを確認してください。リクエストを受け取っている場合は、コードに問題がある可能性が高く、受け取っていない場合は、Pub/Subトピックのエラーやスペルミスが原因である可能性が高いです。

関連記事: