Google Cloudのcloud-functionでGoツールをcloud-schedulerとcloud-pub/subと連携して定期実行させる ( NatureRemo値の投稿させた場合の例 )
やったこと
前回のブログでやったことを今回は、Lambda実行の部分をGoogle Cloudのcloud functionで実行させるようにした。
- 今回やったこと
- cloud functionにGo1.11ランタイムでデプロイする
- cloud pub/subとcloud-scheduleを連携してcloud-functionを定期実行させる
cloud-pub/subとcloud-schedulerを作成する
- cloud-pub/sub
- トピック
NatureRemo
という名前で作成する
- トピック
cloud-scheduler
cloud-schedulerの設定
ソースコード ( GitHub )
cloud-functionをにデプロイする
- 実行環境
- cloud-function
- go1.11
- メモリ: 128MB
- トリガー: Cloud Pub/Sub
- 実行する関数: NatureRemo
- Region: asia-northeast1
- cloud-function
■ デプロイ方法 ( gcloudコマンド )
$ cd ./natureRemo
- go.modを最初に生成する場合:
$ go mod init github.com/yhidetoshi/gcloud-function-examples/natureRemo
$ gcloud functions deploy natureRemo --entry-point NatureRemo --runtime go111 --trigger-resource <TOPIC> --memory 128 --trigger-event google.pubsub.topic.publish --project <PROJECTID> --region asia-northeast1 --set-env-vars MKRKEY=<MKRKEY>,REMOTOKEN=<REMOTOKEN>
・ deploy <CLOUDFUNCTION_NAME> ・ --runtime go111 ・ --entry-point <実行する関数名> ・ --trigger-resource <CLOUD-PUBSUBのTOPIC> ・ --memory 128 ・ --trigger-event google.pubsub.topic.publish (トピックにメッセージがパブリッシュされたとき) ・ --project <PROJECTID> ・ --region asia-northeast1 ・ --set-env-vars MKRKEY=<MKRKEY>,REMOTOKEN=<REMOTOKEN>
まとめ
cloud-functionにGoツールをデプロイしてcloud-pub/sub, cloud-schedulerを連携して定期実行する環境を作り、AWS Lambda + Cloudwatch-Eventで処理していたのをGoogle Cloudに移行した。 また、定期実行の部分は Cloud-Pub/Subとcloud-schedulerで実現できたので今後のGoツールを実行させるときに活用していきたい。