Cloud Functionsを定期実行する

Discordチャンネルの過去投稿をチェックしてアラートを飛ばすPythonコード

 

現在Pythonのコードをローカルで定期的に実行しているのですが、クラウド上で動作させたいのでGoogle Cloud FunctionsとCloud Schedulerを組み合わせて定期的に実行されるようにしたいと思います。

Advertisement

Cloud Functions

Cloud FunctionsはGoogle CloudのFaaSです。

様々なトリガーを利用して任意のコードを実行することができます。

1ヶ月あたり200万回の呼び出しなどが無料です。

Cloud Scheduler

定期的に実行するトリガーとしてCloud Schedulerを利用します。

毎月3つのジョブまでが無料です。

プロジェクトの作成

ここから実際に使っていきます。

まず適当なプロジェクトを作成してください

予算アラートを設定する

設定しなくても利用できますが、一応設定しておくと課金された際にアラートが通知されるので良いかと思います。

Cloud Functionsの作成

メニューを開いてその他のプロダクトを開き、サーバーレスの欄にあるCloud Functionsを選択します。

関数を作成をクリックするとAPIの有効化を要求されるので有効にしてください。

関数名などは好みにしてください。

今回は定期的に実行したいのでトリガーにはCloud Pub/Subを選択します。

トピックを選択を開き、トピックを作成するをクリックしてトピックを作成します。

適当なトピックIDを入力して作成してください。

作成後、保存をクリックしてください。

次へをクリックし、実行したいプログラムに合わせてランタイムを指定、エディタにソースコードを貼り付けてください。

なお、Cloud Pub/Subを利用する場合はエントリポイントの引数にevent, contextを設定する必要があります。

requirements.txtにインストールするライブラリを記述してデプロイをクリックしてください。

テスト

デプロイが完了したら操作から関数をテストをクリックして開き、テストを実行して動作を確認してください。

Cloud Schedulerの作成

定期実行するためにCloud Schedulerの作成を行います。

メニューのインテグレーションサービス欄にあるCloud Schedulerを開いてください。

ジョブのスケジュール作成をクリックし、適当な名前、タイムゾーンなどを設定し、頻度はcronでの構文で指定します。

続行をクリックし、ターゲットタイプにはPub/Sub、トピックは先程作成したものを選択して、メッセージ本文は特に必要なければ{}と記述して作成してください。

テスト

この状態で定期実行されるようになりました。

操作からジョブを強制実行するをクリックするとテストができます。

Advertisement

若干手間ではありますが、これで定期実行することができました。