Workflows は、フルマネージドのオーケストレーション プラットフォームで、定義した順序(ワークフロー)でサービスを実行します。これらのワークフローでは、Cloud Run や Cloud Run 関数でホストされているカスタム サービス、Cloud Vision AI や BigQuery などの Google Cloud サービス、任意の HTTP ベースの API などのサービスを組み合わせることができます。
ソリューションにワークフローを組み込むことで、サービスの依存関係をエンドツーエンドで明示的にモニタリングできます。アプリケーション、オペレーション、またはビジネス プロセスを指定するワークフローは、プロセスの信頼できる情報源または正規のナラティブを提供します。
Workflows はサーバーレスで、必要に応じてスケールアップし、アイドル状態の間は料金が発生しません。ワークフローにコードやライブラリの依存関係がないため、セキュリティ パッチは必要ありません。ワークフローをデプロイすると、メンテナンスなしで確実に実行されます。ワークフローは、最大 1 年間、状態の保持、再試行、ポーリング、待機を行うことができます。
Workflows は、これらの認定と基準に準拠しています。
次の図は、Workflows を使用してサービスをオーケストレートする例を示しています。
主なユースケース
Workflows はさまざまなユースケースに対応しています。以下に例を示します。
サービス オーケストレーション | サービスを組み合わせてソリューションを作成する - 複数のシステム全体で一連のオペレーションを実行し、すべてのオペレーションが完了するのを待ちます。イベント ドリブンにできます。例:
|
バッチジョブ | 複数のアイテムへの操作 - 一連のアイテムまたはバッチデータに対してオペレーションを実行します。多くの場合、スケジュール設定されています。例:
|
ビジネス プロセス | 基幹業務のワークフローを自動化する - 条件、アクション、人間参加型イベントなど、ビジネス プロセスのステップをエンコードします。例:
|
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 はリージョン サービスであり、ワークフローはリソース ロケーションの制約を受けるリージョン リソースです。リソース ロケーション ポリシーを使用して、データ所在地を制御できます。
ワークフローが特定のリージョンにデプロイされると、そのリージョンでのみ実行されます。ただし、ワークフローがHTTP リクエストを実行するか、コネクタを使用する場合、HTTP 呼び出しが同じリージョンから発信されない場合があります。
主な機能
Workflows の主な機能は次のとおりです。
実行の制御
- 手順
- ワークフローを作成するには、Workflows の構文を使用して、必要なステップと実行順序を定義します。すべてのワークフローには、少なくとも 1 つのステップが必要です。 デフォルトで、Workflows は、ステップが順序付きのリストにあるかのように扱い、すべてのステップが実行されるまで、ステップを 1 つずつ実行します。詳細については、Stepsをご覧ください。
- 条件
switch
ブロックを選択メカニズムとして使用して、式の値はワークフローの実行フローを制御できます。詳しくは、利用条件をご覧ください。- 繰り返し
for
ループを使用すると、一連の数字に対して、またはリストやマップなどのデータのコレクションを介して反復処理できます。詳細については、繰り返しをご覧ください。- 並列ステップ
parallel
ステップを使用すると、同時に実行できるワークフローの一部(ブランチまたはループ)を定義できます。詳細については、並列ステップをご覧ください。- サブワークフロー
- サブワークフローは、プログラミング言語のルーティンまたは関数と同様に機能し、ワークフローが複数回繰り返されるステップやステップのセットをカプセル化できます。詳細については、サブワークフローをご覧ください。
実行をトリガーする
- 手動
- ワークフローは、Google Cloud コンソールまたはコマンドラインから Google Cloud CLI を使用して管理できます。GGoogle Cloud コンソールで、ワークフローの構文の編集中の可視化サポートも利用できます。
- 自動
- Workflows API または REST API の Cloud クライアント ライブラリを使用して、ワークフローを管理できます。詳細については、Workflows API とリファレンスをご覧ください。
- スケジュール済み
- Cloud Scheduler を使用して特定のスケジュール(毎週月曜日の午前 9 時や 15 分ごとなど)でワークフローを実行できます。詳細については、Cloud Scheduler の使用によるワークフローのスケジュール設定をご覧ください。
- ランタイム引数
- ランタイムで渡されたデータには、メイン ワークフローに
params
フィールドを追加してアクセスできます(main
ブロックに配置します)。main
ブロックは、有効な JSON データ型である単一の引数を受け入れます。params
フィールドでは、ワークフローは受け取ったデータを格納するために使用する変数を指定します。詳細については、ランタイム引数をご覧ください。
サービスに接続する
- HTTP API
- HTTP 呼び出しを行い、そのレスポンスを変数に割り当てるワークフロー ステップを定義できます。たとえば、HTTP リクエストを介して Cloud Run 関数や Cloud Run などの Google Cloud サービスを呼び出すことができます。リクエストは、HTTP と HTTPS の両方がサポートされています。詳細については、HTTP リクエストの実行と Cloud Run 関数または 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
を使用して、特定の間隔でデータをポーリングすることができます。詳細については、ポーリングを使用して待機するをご覧ください。
認証とアクセス制御
すべてのワークフローの実行で認証された呼び出しが必要になるため、Workflows を使用して、誤った呼び出しや悪意のある呼び出しのリスクを軽減できます。 IAM ベースのサービス アカウントを使用すると、他の Google Cloud APIs の操作を簡素化できます。また、シークレット マネージャー コネクタを使用して、外部 API を認証するためのキーとパスワードを安全に保管することができます。詳細については、アクセス制御とアクセス制御をご覧ください。
オブザーバビリティ
ワークフローは、Cloud Logging でのワークフロー実行の実行ログを自動的に生成します。また、コールロギングまたはカスタムログを使用して、ワークフローの実行中にログがロギングに送信されるタイミングを制御できます。詳細については、Cloud Logging にログを送信するをご覧ください。
Cloud Audit Logs を通じて監査ロギング情報を利用できます。詳細については、ワークフローとワークフローの実行の監査ロギング情報をご覧ください。
指定したワークフローの実行履歴は、ステップ エントリのリストとして取得できます。各エントリは、ワークフロー実行のステップまたは命令ブロックを表します。ステップ エントリは、エラーの原因の特定やワークフローのパフォーマンス最適化に役立ちます。
コードサンプル
サンプルページに、有用な Workflows のコードサンプルが多数用意されています。
次のステップ
Google Cloud コンソール から、または gcloud CLI を使用して、Workflows の使用を開始する。
ワークフローの作成と更新についてさらに学習する。
ワークフローのステップの実行順序を制御する方法を学習する。