はじめに
GMOアドマーケティングの吉岡です。
前回はCloudWorkflowsを紹介しましたが、BigQueryにあるレポートをCloudSQLにインポートするWorkflowsを作成することができました。
引数に日付を指定して別にインポート過去分のレポートを実行するのに一括で実行したかったので、調査しました。
Cloud Workflowsとは?
Cloud Workflowsとは、Google CloudとHTTPベースのAPIサービスをサーバーレスワークフローと統合するサービス。
詳細はこちら→ Cloud Workflows公式ページ
どんなことができるかは前回の記事を参照ください。
一括実行
一括実行するためには以下の4つが必要だと思います。
- コマンド実行できること
- 引数を指定できること
- スクリプト作成
- 実行環境
コマンド実行
コマンドに関してはこちらのgcloud workflows runが使えそうです。
引数指定
引数についてはわかりづらく、リファレンスのサンプル通りに実行してもうまくいかなかったですが、dataを使い微修正することで動作することを確認しました。
スクリプト作成
次のようなrubyスクリプトを書いて、前回作成したworkflow名を指定して実行します。
1 2 3 4 5 6 7 8 9 10 11 |
require "date" def exe_workflows start_date = Date.parse("2023-03-01") end_date = Date.parse("2023-03-31") (start_date..end_date).each do |date| exe_date = date.strftime("%Y-%m-%d") p exe_date `gcloud workflows run workflow-assign-date --data='{"date": "#{exe_date}"}'` end exe_workflows |
実行環境
はじめはローカルからgcloudコマンドを使い実行していましたが、ネット接続が切れたタイミングでワークフローが失敗してしまうため、cloud shellを使うのが良さそうです。
GCPの右上にcloud shellをアクティブにするボタンがあります。
こちらをクリックすると画面下にcloud shellが表示されます。
rubyコマンドはインストールされているため、先ほどのrubyスクリプトをセットして実行することができます。
gcloudコマンドをはじめに実行するときは承認が必要なので、一度実行しておいた方が良さそうです。
まとめ
今回はGoogle Cloud Workflowsで、一括実行する方法を紹介しました。
一括実行の需要はあると思いますが、実際やろうと思うと調べることも多いと思うので、参考にしてみてください。
参考リンク
- ワークフロー | Google Cloud
https://cloud.google.com/workflows, (参照: 2023/3/31) - gcloud workflows run | Google Cloud CLI Documentation
https://cloud.google.com/sdk/gcloud/reference/workflows/run, (参照: 2023/3/31)