クライアント ライブラリを使用したクイックスタート

このクイックスタートでは、クライアント ライブラリを使用してワークフローを実行し、実行結果を表示する方法を説明します。このサンプルは、Cloud Console またはgcloudコマンドライン ツールを使用して、myFirstWorkflow ワークフローをデプロイ済みであることを前提としています。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. ワークフロー API を有効にします。

    ワークフロー API を有効にするには:
  5. Cloud Console で、[サービス アカウント] ページに移動します。

    [サービス アカウントの作成] ページに移動
  6. [サービス アカウントの作成] を選択します。
  7. [サービス アカウント名] フィールドに名前を入力します。
  8. [作成] をクリックします。
  9. [ロール] リストから、[ロギング] > [ログ書き込み] を選択します。

    : [ロール] フィールドによって、サービス アカウントによるリソースへのアクセスが認可されます。Cloud Logging にログを送信するには、roles/logging.logWriter ロールを割り当てます。本番環境アプリケーションを開発している場合は、常に、最小限のロールを付与します。詳しくはサービス アカウントへのロールの付与をご覧ください。ワークフローのロールの一覧については、アクセス制御のリファレンスをご覧ください。
  10. [続行] をクリックします。
  11. [完了] をクリックします。

サンプルコードを取得する

  1. ローカルマシンにサンプル リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

  2. Cloud Functions のサンプルコードが含まれているディレクトリに移動します。

    cd nodejs-docs-samples/workflows/quickstart/
  3. サンプルコードを確認します。

    const {ExecutionsClient} = require('@google-cloud/workflows');
    const client = new ExecutionsClient();
    
    /**
     * Sleeps the process N number of milliseconds.
     * @param {Number} ms The number of milliseconds to sleep.
     */
    function sleep(ms) {
      return new Promise(resolve => {
        setTimeout(resolve, ms);
      });
    }
    
    // Execute workflow
    try {
      const createExecutionRes = await client.createExecution({
        parent: client.workflowPath(projectId, location, workflow),
      });
      const executionName = createExecutionRes[0].name;
      console.log(`Created execution: ${executionName}`);
    
      // Wait for execution to finish, then print results.
      let executionFinished = false;
      let backoffDelay = 1000; // Start wait with delay of 1,000 ms
      console.log('Poll every second for result...');
      while (!executionFinished) {
        const [execution] = await client.getExecution({
          name: executionName,
        });
        executionFinished = execution.state !== 'ACTIVE';
    
        // If we haven't seen the result yet, wait a second.
        if (!executionFinished) {
          console.log('- Waiting for results...');
          await sleep(backoffDelay);
          backoffDelay *= 2; // Double the delay to provide exponential backoff.
        } else {
          console.log(`Execution finished with state: ${execution.state}`);
          console.log(execution.result);
          return execution.result;
        }
      }
    } catch (e) {
      console.error(`Error executing workflow: ${e}`);
    }

このプログラムは次の処理を行います。

  1. Workflows クライアント ライブラリを設定します。
  2. ワークフローを実行します。
  3. 実行が終了するまで、ワークフローの実行をポーリングします(指数バックオフを使用)。
  4. 実行結果を出力します。

依存関係のインストール

npm install

サンプルの実行

サンプルを実行するには、次のスクリプトを実行します。

node . PROJECT_ID [CLOUD_REGION] [WORKFLOW_NAME]

次のコマンドライン引数を置き換えます。

  • PROJECT_ID(必須): Cloud Platform プロジェクトのプロジェクト ID
  • CLOUD_REGION: ワークフローのクラウドのロケーション(デフォルト: us-central1
  • WORKFLOW_NAME: ワークフローの ID(デフォルト: myFirstWorkflow

次に例を示します。

node . my-custom-project us-central1 userSignupWorkflow

出力例:

Execution finished with state: SUCCEEDED
["Sunday","Sunday in the Park with George","Sunday shopping","Sunday Bloody Sunday","Sunday Times Golden Globe Race","Sunday All Stars","Sunday Night (South Korean TV series)","Sunday Silence","Sunday Without God","Sunday Independent (Ireland)"]

クリーンアップ

このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Cloud Console の [ワークフロー] ページに移動します。
    ワークフロー

  2. [削除] ボタンを選択します。

  3. プロンプトが表示されたら、ワークフローの名前を入力します。

  4. [削除] を選択します。

次のステップ