Help us understand the problem. What is going on with this article?

Cloud Functionsをcronっぽく実行

More than 1 year has passed since last update.

Cloud Functionsをcron実行したい...。
誰もが思うこの機能ですが、しかしCloud Functions自体にはCron機能はなく、何かしら別のサービスを組み合わせる必要があります。

私はCloud FunctionsのトリガーにCloud PubSubを設定し、Azure FunctionからメッセージをPublishすることで定期実行をやっていました。

HTTPをトリガーとしていないのは、セキュリティの問題です。Cloud FunctionsのURLはリージョン/プロジェクトID/名前で決まるので、特定されやすいとか、コードで認証つけたとしても認証されるまではちょっと実行される等々細かいところを突っ込まれるので、pubsubを使っています。

なぜAzure Functionだけでやっていなのはというと、Azure Functionでは動作しないが、Cloud Functionsでは動作する、というものがあったからです(詳細は省略)。

前置きが長くなりましたが、11月にリリースされたCloud Schedulerを使うことでより簡単に定期実行ができるようになりした。
上記のAzure Functionの部分をCloud Schedulerに置き換えた方法をご紹介致します。
https://cloud.google.com/scheduler/docs/quickstart
https://cloud.google.com/scheduler/docs/tut-pub-sub

  • Create Cloud PubSub
  • Create Cloud Functions
  • Create Cloud Scheduler
  • Run Job

Cloud PubSub

Cloud PubSubを作ります。中継ポイントとなります。

$ gcloud pubsub topics create test-topic

Creater Cloud Functions

--trigger-topic=test-topicというふうに先程作成したトピックを指定していきます。

$ gcloud functions deploy test --source='https://source.developers.google.com/projects/<project-id>/repos/tyarin/moveable-aliases/gcp' --runtime=nodejs8 --trigger-topic=test-topic

Create Cloud Scheduler Job

ポータルのCloud Scheduler => ジョブを作成
ここでペイロードに動的な値(例えば時刻など)を入力する方法がわかりませんでした。ご存知の方教えていただけると幸いです。

image.png

Run Job

ジョブ作成後、ジョブ一覧が見えるので「今すぐ実行」ボタンを押下。
下記のように結果が成功となればOKです。

image.png

実行ログも確認することができます(Scheduler側)。
image.png

まとめ

Cloud Schedulerをつかってcron形式でCloud Functionsを呼び出すことができました。
いままではAzure FunctionにGCPのクレデンシャルをもってきて...とやっていたのでそのへん楽になりました。

tkykm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした