ワークフローの概要

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

ソリューションにワークフローを組み込むことで、サービスの依存関係をエンドツーエンドで明示的にモニタリングできます。アプリケーション、オペレーション、またはビジネス プロセスを指定するワークフローは、プロセスの信頼できる情報源または正規のナラティブを提供します。

Workflows はサーバーレスで、必要に応じてスケールアップし、アイドル状態の間は料金が発生しません。ワークフローにコードやライブラリの依存関係がないため、セキュリティ パッチは必要ありません。ワークフローをデプロイすると、メンテナンスなしで確実に実行されると想定できます。ワークフローでは、状態の保持、再試行、ポーリング、最大 1 年間の待機が可能です。

Workflows は、これらの認定と基準に準拠しています。

次の図は、Workflows を使用してサービスをオーケストレートする例を示しています。

Workflows を使用したサービス オーケストレーション

主なユースケース

Workflows はさまざまなユースケースに対応しています。以下に例を示します。

サービス オーケストレーション サービスを組み合わせてソリューションを作成する - 複数のシステム全体で一連のオペレーションを実行し、すべてのオペレーションが完了するのを待ちます。イベント ドリブンにできます。例:
  • 新しくアップロードされたファイルを Cloud Vision AI に送信し、Firestore にタグを書き込む
  • Cloud Functions の関数を呼び出し、結果を Cloud Run サービスに送信する
バッチジョブ 複数のアイテムへの操作 - 一連のアイテムまたはバッチデータに対してオペレーションを実行します。多くの場合、スケジュール設定されています。例:
  • 毎日お客様向けメールを送信する
  • BigQuery または機械学習ジョブを準備して実行する
  • レポートを生成する
ビジネス プロセス 基幹業務のワークフローを自動化する - 条件、アクション、人間参加型イベントなど、ビジネス プロセスのステップをエンコードします。例:
  • 注文の依頼からフルフィルメントまで追跡する
  • 承認によりリソース リクエストを自動化する
IT プロセスの自動化 サービス オペレーションのマネージド実行 - Google Cloud の一連のサービス オペレーションを簡単にスクリプト化できます。例:
  • 新しいテナント プロジェクトまたはインフラストラクチャをプロビジョニングする
  • スケジュールまたはイベント トリガーによってリソースを停止する

基本コンセプト

ワークフローは、Workflows 構文を使用して記述された一連のステップで構成され、YAML または JSON のいずれかで記述できます。これがワークフローの定義です。Workflows 構文の詳細については、構文リファレンスをご覧ください。

ワークフローを作成するとデプロイされ、ワークフローを実行する準備が整います。Google Cloud コンソールまたは Google Cloud CLI を使用して、ワークフローの作成と更新を行う方法を確認してください。また、任意の IDE またはソースコード エディタを使用して、予測入力と構文検証を設定してワークフローを作成することもできます。

実行とは、ワークフローの定義に含まれるロジックを 1 回だけ実行することです。実行されなかったワークフローは課金されません。ワークフローのそれぞれの実行はすべて独立しています。また、このプロダクトの迅速なスケーリングにより、多数の同時実行が可能です。 クライアント ライブラリ、Google Cloud コンソール、Google Cloud CLI を使用するか、またはWorkflows REST API を使用して HTTP POST リクエストをワークフローの呼び出し URL に送信して、ワークフローを実行できます。詳細については、ワークフローを実行するをご覧ください。

主な機能

Workflows の主な機能は次のとおりです。

実行の制御

手順
ワークフローを作成するには、Workflows の構文を使用して、必要なステップと実行順序を定義します。すべてのワークフローには、少なくとも 1 つのステップが必要です。 デフォルトで、Workflows は、ステップが順序付きのリストにあるかのように扱い、すべてのステップが実行されるまで、ステップを 1 つずつ実行します。詳細については、Stepsをご覧ください。
条件
switch ブロックを選択メカニズムとして使用して、式の値はワークフローの実行フローを制御できます。詳しくは、条件をご覧ください。
繰り返し
for ループを使用すると、一連の数字に対して、またはリストやマップなどのデータのコレクションを介して反復処理できます。詳細については、繰り返しをご覧ください。
並列ステップ
parallel ステップを使用すると、同時に実行できるワークフローの一部(ブランチまたはループ)を定義できます。詳細については、並列ステップをご覧ください。
サブワークフロー
サブワークフローは、プログラミング言語のルーティンまたは関数と同様に機能し、ワークフローが複数回繰り返されるステップやステップのセットをカプセル化できます。詳細については、サブワークフローをご覧ください。

実行をトリガーする

手動
ワークフローは、Google Cloud コンソールまたはコマンドラインから Google Cloud CLI を使用して管理できます。GGoogle Cloud コンソールで、ワークフローの構文の編集中の可視化サポートも利用できます。
自動
Workflows API 用の Cloud クライアント ライブラリ(REST API)は、ワークフローの管理に使用できます。詳細については、Workflows API とリファレンスをご覧ください。
スケジュール設定済み
Cloud Scheduler を使用して特定のスケジュール(毎週月曜日の午前 9 時や 15 分ごとなど)でワークフローを実行できます。詳細については、Cloud Scheduler の使用によるワークフローのスケジュール設定をご覧ください。
ランタイム引数
実行時に渡されるデータにアクセスするには、params フィールドをメイン ワークフロー(main ブロック内)に追加します。main ブロックは、有効な JSON データ型である単一の引数を受け入れます。params フィールドでは、ワークフローは受け取ったデータを格納するために使用する変数を指定します。詳細については、ランタイム引数をご覧ください。

サービスに接続する

HTTP API
HTTP 呼び出しを行い、そのレスポンスを変数に割り当てるワークフロー ステップを定義できます。たとえば、HTTP リクエストを介して Cloud Functions や Cloud Run などの Google Cloud サービスを呼び出すことができます。リクエストは、HTTP と HTTPS の両方がサポートされています。詳細については、HTTP リクエストを行うCloud Functions または Cloud Run を呼び出すをご覧ください。
Identity-Aware Proxy(IAP)を有効にすると、プライベート オンプレミス、Compute Engine、Google Kubernetes Engine(GKE)、その他の Google Cloud エンドポイントを呼び出すことができます。IAP を使用すると、HTTPS によってアクセスされるアプリケーションの一元的な認可レイヤを確立できるため、ネットワーク レベルのファイアウォールに依存せずにアプリケーション レベルのアクセス制御モデルを使用できます。詳細については、プライベート オンプレミス、Compute Engine、GKE、その他のエンドポイントを呼び出すをご覧ください。
また、Workflows で Service Directory のサービス レジストリを使用すると、ワークフローの実行から HTTP 呼び出しのプライベート エンドポイントをターゲットにできます。Virtual Private Cloud(VPC)ネットワーク内にプライベート エンドポイントを作成することで、エンドポイントを VPC Service Controls に準拠させることが可能です。詳細については、VPC Service Controls 準拠のプライベート エンドポイントを呼び出すをご覧ください。
コネクタ
Workflows は、ワークフロー内の他の Google Cloud API に接続し、ワークフローをこれらの Google Cloud プロダクトと統合するために使用できるコネクタを公開します。コネクタは、リクエストのフォーマットを処理するため、呼び出し側のサービスが簡素化されます。コネクタは、Google Cloud API の詳細を認識する必要がないメソッドと引数を提供します。詳しくは、コネクタについてをご覧ください。
標準ライブラリと環境変数
Workflows の標準ライブラリ、組み込み環境変数、ユーザー定義の環境変数を使用すると、サービスの引数を効率的に作成してレスポンスを処理できます。
標準ライブラリには、モジュールと、データ型や形式の変換など、よく使用される関数が含まれています。ワークフローでライブラリをインポートまたは読み込む必要はありません。ライブラリ関数はすぐに機能します。詳細については、標準ライブラリの概要をご覧ください。
ワークフローの環境情報(ロケーションやプロジェクト ID など)には、組み込み環境変数を使用してアクセスできます。組み込み環境変数は宣言が不要で、すべてのワークフロー実行で使用できます。詳細については、組み込み環境変数をご覧ください。
ワークフローをデプロイすると、任意のキーと値の文字列ペアを、実行時にワークフローからアクセスできるユーザー定義の環境変数として設定できます。たとえば、デプロイ先の環境に応じて動的に構成されるワークフローを作成できます。詳しくは、環境変数を使用するをご覧ください。

エラー処理

指数バックオフによる自動 HTTP 呼び出し再試行、カスタム エラーハンドラ、その他の高度な機能など、ワークフローの例外処理を使用すると、障害発生時にワークフローの復元と動作のカスタマイズができます。詳細については、ワークフローのエラーをご覧ください。

待機中

コールバックを使用すると、ワークフローの実行では、別のサービスがコールバック エンドポイントにリクエストを行うことを待ち、そのリクエストによってワークフローの実行を再開できます。コールバックを使用すると、ポーリングせずに指定したイベントを待機して、その発生をワークフローに知らせることが可能です。詳細については、コールバックを使用して待機するをご覧ください。

ワークフローは、その定義にスリープ ステップを追加することで、実行を一時停止できます。sys.sleep を使用して、特定の間隔でデータをポーリングすることができます。詳細については、ポーリングの使用を待機するをご覧ください。

認証とアクセス制御

ワークフロー実行の呼び出しにはすべて認証が必要になるため、ワークフローを使用することで、誤った呼び出しや悪意のある呼び出しのリスクを軽減できます。IAM ベースのサービス アカウントを使用すると、他の Google Cloud APIs の操作を簡素化できます。また、シークレット マネージャー コネクタを使用して、外部 API を認証するためのキーとパスワードを安全に保管することができます。詳細については、アクセス制御アクセス制御をご覧ください。

オブザーバビリティ

ワークフローは、Cloud Logging でのワークフロー実行の実行ログを自動的に生成します。また、コールロギングまたはカスタムログを使用して、ワークフローの実行中にログがロギングに送信されるタイミングを制御できます。詳細については、Cloud Logging にログを送信するをご覧ください。

Cloud Audit Logs を通じて監査ロギング情報を利用できます。詳細については、ワークフローワークフロー実行の監査ロギング情報をご覧ください。

指定したワークフローの実行履歴は、ステップ エントリのリストとして取得できます。各エントリは、ワークフロー実行のステップまたは命令ブロックを表します。ステップ エントリは、エラーの原因の特定や、ワークフローのパフォーマンス最適化に役立ちます。

コードサンプル

サンプルページに、有用な Workflows のコードサンプルが多数用意されています。

次のステップ