Workflowsを触ってみる【GCP】


やりたいこと

GCPのWorkflowsに入門する。
サンプルワークフローを作るところまでやってみる。

環境

  • Windows 10 Pro
  • Google Cloud SDK 378.0.0

Workflowsとは

公式ドキュメントより抜粋

ワークフローは、フルマネージドのオーケストレーション プラットフォームで、定義した順序(ワークフロー)でサービスを実行します。
これらのワークフローでは、
Cloud Run や Cloud Functions でホストされているカスタム サービス、
Cloud Vision AI や BigQuery などの Google Cloud サービス、
任意の HTTP ベースの API を含むサービスを組み合わせることができます。

CloudRunやCloudFunctionsといったAPIベースのGCPサービスや、外部APIをつなぎ込んでワークフローを作れるサービスのようです。

ワークフローを作成する別のGCPサービスとしては Cloud Composerがあります。
ComposerとWorkflowsの比較は、こちらのDataAnalyticsOnAirの資料13ページ目に非常に分かりやすく掲載されていました。

手順

ワークフローを作成する

以下のようなYAMLファイルを作成します。
「getTodo」と「returnValue」という2つのステップから成る、簡単なワークフローです。
JSONPlaceholderのWebAPIにリクエストを送りJSONデータを取得し、そのデータを返すワークフローを作成します。

sample_workflow1.yml
- getTodo:
    call: http.get
    args:
      url: https://jsonplaceholder.typicode.com/todos/1
    result: response
- returnValue:
    return: ${response.body}

CloudSDKがインストールされたターミナルでYAMLファイルがあるディレクトリに移動し、以下を実行すると、「sample_workflow1」という名前のワークフローがデプロイされます。

gcloud workflows deploy sample_workflow1 --source=sample_workflow1.yml

Workflowsのコンソールを確認すると、ワークフローがデプロイできたことが確認できました。

ターミナルで以下を実行すると、デプロイされたワークフローの一覧を確認することができます。

> gcloud workflows list
NAME                                                                             STATE   REVISION_ID  UPDATE_TIME
projects/hoge/locations/us-central1/workflows/sample_workflow1  ACTIVE  000001-9ef   2022-03-27T02:03:23.596046039Z

ワークフローを実行する

ターミナルから実行するときは以下を実行します。

> gcloud workflows run sample_workflow1

出力はこのようになります。resultのところに、APIのレスポンスが格納されているのが確認できます。

Waiting for execution [f374cb6e-9ead-40df-9fb7-e8c5c193688e] to complete...done.
argument: 'null'
endTime: '2022-03-27T02:13:29.401004603Z'
name: projects/hoge/locations/us-central1/workflows/sample_workflow1/executions/f374cb6e-9ead-40df-9fb7-e8c5c193688e
result: '{"completed":false,"id":1,"title":"delectus aut autem","userId":1}'
startTime: '2022-03-27T02:13:29.102838318Z'
state: SUCCEEDED
workflowRevisionId: 000001-9ef

Workflowsのコンソールから実行することもできます。

ワークフローを削除する

Workflowsは、実行したステップの数によって課金額が決まります。
外部へのリクエストのステップは1か月に2000ステップまで無料とのことですが、念のためワークフローを削除しておきます。

> gcloud workflows delete sample_workflow1

参考