こんにちは、サービス開発推進部 青木です。
社内タスクの自動化にあたり、Google CloudのWorkflowsというサービスを調べてみました。
Workflowsとは?
Workflowsを知るためにまずドキュメントを見てみました。
ドキュメントより
ワークフローは、フルマネージドのオーケストレーション プラットフォームで、定義した順序(ワークフロー)でサービスを実行します。これらのワークフローでは、Cloud Run や Cloud Functions でホストされているカスタム サービス、Cloud Vision AI や BigQuery などの Google Cloud サービス、任意の HTTP ベースの API を含むサービスを組み合わせることができます。
Workflowsというサービス名ですのでワークフロー系のサービスであることが想像できますね。
中身のコンポーネントにはCloud FunctionsやCloud Runで作ったアプリ以外にAPI系のサービスと連携できるようです。
AWSのStep Fucntionsと同種のサービスですね。
主なユースケース
こちらもドキュメントを見てみました。
| ユースケース | 説明 |
|---|---|
| サービス オーケストレーション | サービスを組み合わせてソリューションを作成する
|
| バッチジョブ | 一連のアイテムまたはバッチデータに対してオペレーションを実行する。
|
| ビジネス プロセス | 基幹業務のワークフローを自動化する
|
| IT プロセスの自動化 | Google Cloud の一連のサービス オペレーションを簡単にスクリプト化する
|
実は課内で自動化したいタスクというのがITプロセスの自動化の例にある、プロジェクト作成、リソースの停止あたりになります。
例にも書いてあるくらいですので、期待できます。
課金体系について
どうやらWorkflowsはサーバレスタイプのサービスのようですので、スモールスタートが可能な課金体系になっているようです。
| カテゴリ | ステップ | 料金 |
|---|---|---|
| 内部ステップ | 最初の 5,000 ステップ | 無料 |
| 5,000 ステップ以降 | 1,000 ステップあたり $0.01 | |
| 外部 HTTP 呼び出し | 最初の 2,000 呼び出し | 無料 |
| 2,000 以降の呼び出し | 1,000 呼び出しあたり $0.025 |
ステップはワークフローに含まれる1つの処理のことであり、
内部ステップというのはGoogle Cloud内部で行われるステップをのことだそうです。AppEngineやCloud Runで作ったアプリは内部ステップになりそうです。
詳しくはこちらに書いてありました。

使ってみた
試しに、ドキュメントにあるクイックスタートをやってみました。

Workflows APIの有効化
Workflowsコンソールにアクセスし、APIの有効化を実施しました。
サービスアカウントの作成
クイックスタートにある通り、ログ書き込み権限を持ったサービスアカウントを作りました。
| サービスアカウント名 | sa-aoki-workflows |
|---|---|
| ロール | ログ書き込み |
ワークフローの作成
クイックスタートの手順に則り、作成に進みます。
ワークフローの定義画面では以下を入力しました。
詳細な説明は避けますが、気になる方はこちらを参照ください。

今回のクイックスタートでは、指定した言葉、もしくは現在の曜日を使用して、Wikipediaを検索するワークフローが使われているようです。
main:
params: [input]
steps:
- checkSearchTermInInput:
switch:
- condition: ${"searchTerm" in input}
assign:
- searchTerm: ${input.searchTerm}
next: readWikipedia
- getCurrentTime:
call: http.get
args:
url: https://us-central1-workflowsample.cloudfunctions.net/datetime
result: currentDateTime
- setFromCallResult:
assign:
- searchTerm: ${currentDateTime.body.dayOfTheWeek}
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${searchTerm}
result: wikiResult
- returnOutput:
return: ${wikiResult.body[1]}
上記を定義すると、以下のように可視化してくれました。かっこいいですね。
最後に「デプロイ」を押したらできあがりです。
ワークフローの実行
ワークフローの詳細画面で「実行」を押してみたところ、ワークフローへのインプットを決める画面が出てきました。
今回は何も指定せずに実行してみます。
無事実行され、Wikipediaから曜日に関するデータを得ることができました。
さいごに
今回はGoogle Cloudが提供するワークフローサービス、Workflowsについてまとめてみました。
次回は課内タスクを自動化した体験談についてお話しできればいいなと考えております。
ではでは。




