Cloud クライアント ライブラリを使用してワークフローを実行する
このクイックスタートでは、Cloud クライアント ライブラリを使用してワークフローを実行し、実行結果を表示する方法について説明します。
Cloud クライアント ライブラリのインストールと開発環境の設定の詳細については、Workflows クライアント ライブラリの概要をご覧ください。
ターミナルまたは Cloud Shell で Google Cloud CLI を使用して、次の手順を完了できます。
始める前に
組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
      Install the Google Cloud CLI. 
- 
          外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。 
- 
        gcloud CLI を初期化するには、次のコマンドを実行します。 gcloud init
- 
  
  
    Create or select a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 - 
        Create a Google Cloud project: gcloud projects create PROJECT_ID Replace PROJECT_IDwith a name for the Google Cloud project you are creating.
- 
        Select the Google Cloud project that you created: gcloud config set project PROJECT_ID Replace PROJECT_IDwith your Google Cloud project name.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Workflows API: Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable workflows.googleapis.com 
- 
Set up authentication: - 
    Ensure that you have the Create Service Accounts IAM role
    (roles/iam.serviceAccountCreator). Learn how to grant roles.
- 
    Create the service account: gcloud iam service-accounts create SERVICE_ACCOUNT_NAME Replace SERVICE_ACCOUNT_NAMEwith a name for the service account.
- 
    
      Grant the roles/ownerIAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner Replace the following: - SERVICE_ACCOUNT_NAME: the name of the service account
- PROJECT_ID: the project ID where you created the service account
 
 
- 
    Ensure that you have the Create Service Accounts IAM role
    (
- 
      Install the Google Cloud CLI. 
- 
          外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。 
- 
        gcloud CLI を初期化するには、次のコマンドを実行します。 gcloud init
- 
  
  
    Create or select a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 - 
        Create a Google Cloud project: gcloud projects create PROJECT_ID Replace PROJECT_IDwith a name for the Google Cloud project you are creating.
- 
        Select the Google Cloud project that you created: gcloud config set project PROJECT_ID Replace PROJECT_IDwith your Google Cloud project name.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Workflows API: Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable workflows.googleapis.com 
- 
Set up authentication: - 
    Ensure that you have the Create Service Accounts IAM role
    (roles/iam.serviceAccountCreator). Learn how to grant roles.
- 
    Create the service account: gcloud iam service-accounts create SERVICE_ACCOUNT_NAME Replace SERVICE_ACCOUNT_NAMEwith a name for the service account.
- 
    
      Grant the roles/ownerIAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner Replace the following: - SERVICE_ACCOUNT_NAME: the name of the service account
- PROJECT_ID: the project ID where you created the service account
 
 
- 
    Ensure that you have the Create Service Accounts IAM role
    (
- (省略可)Cloud Logging にログを送信するには、サービス アカウントに roles/logging.logWriterロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter" サービス アカウントのロールと権限の詳細については、ワークフローにGoogle Cloud リソースへのアクセス権限を付与するをご覧ください。 
- 必要に応じて、Git ソースコード管理ツールをダウンロードしてインストールします。
- 次の内容のテキスト ファイルを - myFirstWorkflow.yamlという名前で作成します。
- ワークフローを作成したらデプロイできますが、そのワークフローは実行しないでください。 - gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=CLOUD_REGION - CLOUD_REGIONは、ワークフローのサポートされているロケーションに置き換えます。コードサンプルで使用されているデフォルトのリージョンは- us-central1です。
- ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。 - C#- git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git - または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。 - Go- git clone https://github.com/GoogleCloudPlatform/golang-samples.git - または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。 - Java- git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git - または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。 - Node.js- git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git - または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。 - Python- git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git - または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。 
- Workflows のサンプルコードが含まれているディレクトリに移動します。 - C#- cd dotnet-docs-samples/workflows/api/Workflow.Samples/ - Go- cd golang-samples/workflows/executions/ - Java- cd java-docs-samples/workflows/cloud-client/ - Node.js- cd nodejs-docs-samples/workflows/quickstart/ - Python- cd python-docs-samples/workflows/cloud-client/ 
- サンプルコードを見てみましょう。各サンプルアプリは次の処理を行います。 - Workflows 用の Cloud クライアント ライブラリを設定します。
- ワークフローを実行します。
- 実行が終了するまで、ワークフローの実行をポーリングします(指数バックオフを使用)。
- 実行結果を出力します。
 - C#- Go- Java- Node.js- Python
- サンプルを実行するには、まず依存関係をインストールします。 - C#- dotnet restore - Go- go mod download - Java- mvn compile - Node.js- npm install -D tsx - Python- pip3 install -r requirements.txt 
- スクリプトを実行します。 - C#- GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME dotnet run - Go- GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME go run . - Java- GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME mvn compile exec:java -Dexec.mainClass=com.example.workflows.WorkflowsQuickstart - Node.js- npx tsx index.js - Python- GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME python3 main.py - 次のように置き換えます。 - PROJECT_ID: Google Cloud プロジェクト名
- CLOUD_REGION: ワークフローのロケーション(デフォルト:- us-central1)
- WORKFLOW_NAME: ワークフロー名(デフォルト:- myFirstWorkflow)
 - 出力は次のようになります。 - Execution finished with state: SUCCEEDED Execution results: ["Thursday","Thursday Night Football","Thursday (band)","Thursday Island","Thursday (album)","Thursday Next","Thursday at the Square","Thursday's Child (David Bowie song)","Thursday Afternoon","Thursday (film)"]
- 作成したワークフローを削除します。 - gcloud workflows delete myFirstWorkflow
- 続行を確認するメッセージが表示されたら、「 - y」と入力します。
サンプル ワークフローをデプロイする
ワークフローを定義したら、デプロイして実行できるようにします。デプロイの手順では、ソースファイルを実行できることも検証されます。
次のワークフローは、リクエストを公開 API に送信してから、API のレスポンスを返します。
サンプルコードを取得する
GitHub からサンプルコードのクローンを作成できます。
サンプルコードを実行する
サンプルコードを実行して、ワークフローを実行できます。ワークフローを実行すると、そのワークフローに関連付けられたデプロイ済みのワークフロー定義が実行されます。
実行リクエストでのデータ渡し
クライアント ライブラリの言語によっては、実行リクエストでランタイム引数を渡すこともできます。次に例を示します。
C#
Go
Java
// Creates the execution object
CreateExecutionRequest request =
    CreateExecutionRequest.newBuilder()
        .setParent(parent.toString())
        .setExecution(Execution.newBuilder().setArgument("{\"searchTerm\":\"Friday\"}").build())
        .build();
Node.js
// Execute workflow
try {
  const createExecutionRes = await client.createExecution({
    parent: client.workflowPath(projectId, location, workflow),
    execution: {
      argument: JSON.stringify({"searchTerm": "Friday"})
    }
});
const executionName = createExecutionRes[0].name;
Python
ランタイム引数を渡す方法について詳しくは、実行リクエストでのランタイム引数渡しをご覧ください。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。
ワークフローが削除されます。