Cloud クライアント ライブラリを使用してワークフローを実行する
このクイックスタートでは、Cloud クライアント ライブラリを使用してワークフローを実行し、実行結果を表示する方法について説明します。
Cloud クライアント ライブラリのインストールと開発環境の設定の詳細については、Workflows クライアント ライブラリの概要をご覧ください。
ターミナルまたは Cloud Shell で Google Cloud CLI を使用して、次の手順を完了できます。
始める前に
組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
Workflows API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable workflows.googleapis.com
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
Workflows API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable workflows.googleapis.com
-
認証を設定します。
-
サービス アカウントの作成 IAM ロール(
roles/iam.serviceAccountCreator)とプロジェクト IAM 管理者ロール(roles/resourcemanager.projectIamAdmin)があることを確認します。ロールを付与する方法を確認する。 -
サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAMEをサービス アカウントの名前に置き換えます。 -
サービス アカウントに
roles/logging.logWriterIAM ロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/logging.logWriter
以下を置き換えます。
SERVICE_ACCOUNT_NAME: サービス アカウントの名前PROJECT_ID: サービス アカウントを作成したプロジェクト ID
-
サービス アカウントの作成 IAM ロール(
- 必要に応じて、Git ソースコード管理ツールをダウンロードしてインストールします。
サービス アカウントのロールと権限の詳細については、ワークフローにGoogle Cloud リソースへのアクセス権限を付与するをご覧ください。
必要なロール
このクイックスタートを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
サービス アカウント ユーザー(
roles/iam.serviceAccountUser) -
ワークフロー管理者 (
roles/workflows.admin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
サンプル ワークフローをデプロイする
ワークフローを定義したら、デプロイして実行できるようにします。デプロイの手順では、ソースファイルを実行できることも検証されます。
次のワークフローは、リクエストを公開 API に送信してから、API のレスポンスを返します。
次の内容のテキスト ファイルを
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です。
サンプルコードを取得する
GitHub からサンプルコードのクローンを作成できます。
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
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)"]
実行リクエストでのデータ渡し
クライアント ライブラリの言語によっては、実行リクエストでランタイム引数を渡すこともできます。次に例を示します。
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 プロジェクトを削除します。
作成したワークフローを削除します。
gcloud workflows delete myFirstWorkflow続行を確認するメッセージが表示されたら、「
y」と入力します。
ワークフローが削除されます。