【GCP】Workflows使ってみた

こんにちは、サービス開発推進部 青木です。

社内タスクの自動化にあたり、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と同種のサービスですね。

主なユースケース

こちらもドキュメントを見てみました。

ユースケース 説明
サービス オーケストレーション サービスを組み合わせてソリューションを作成する

  • 新しくアップロードされたファイルを Cloud Vision AI に送信して、タグを Firestore に書き込む
バッチジョブ 一連のアイテムまたはバッチデータに対してオペレーションを実行する。

  • レポートを生成する
ビジネス プロセス 基幹業務のワークフローを自動化する

  • 承認が必要なリソース リクエストを自動化する
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で作ったアプリは内部ステップになりそうです。

詳しくはこちらに書いてありました。

料金  |  ワークフロー  |  Google Cloud
ワークフローの料金を確認する

使ってみた

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

クイックスタート: Google Cloud Console を使用してワークフローを作成する
Google Cloud Console を使用してワークフローを作成、デプロイ、実行する方法について説明します。

Workflows APIの有効化

Workflowsコンソールにアクセスし、APIの有効化を実施しました。Workflowsコンソール

サービスアカウントの作成

クイックスタートにある通り、ログ書き込み権限を持ったサービスアカウントを作りました。

サービスアカウント名 sa-aoki-workflows
ロール ログ書き込み

ワークフローの作成

クイックスタートの手順に則り、作成に進みます。

ワークフローの作成画面

ワークフローの定義画面では以下を入力しました。
詳細な説明は避けますが、気になる方はこちらを参照ください。

APIs and reference  |  Workflows  |  Google Cloud

今回のクイックスタートでは、指定した言葉、もしくは現在の曜日を使用して、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についてまとめてみました。

次回は課内タスクを自動化した体験談についてお話しできればいいなと考えております。

ではでは。

タイトルとURLをコピーしました