Workflows を使用すると、ワークフローの一部として Cloud Run ジョブを実行し、より複雑なデータ処理を行う、または既存のジョブのシステムをオーケストレートします。
このチュートリアルでは、Workflows を使用して、Cloud Storage のイベントに応答して環境変数としてジョブに渡されるデータを処理する Cloud Run ジョブを実行する方法について説明します。
イベントデータを Cloud Storage バケットに保存することもできます。これにより、顧客管理の暗号鍵を使用してデータを暗号化できます。詳細については、Cloud Storage に保存されているイベントデータを処理する Cloud Run ジョブを実行するをご覧ください。
目標
このチュートリアルの内容は次のとおりです。
- Cloud Storage バケット内のデータファイルを処理する Cloud Run ジョブを作成します。
- 次の処理を行うワークフローをデプロイします。
- Cloud Storage イベントを引数として受け取ります。
- イベントで指定された Cloud Storage バケットが、Cloud Run ジョブで使用されているバケットと同じかどうかを確認します。
- 存在する場合は、Cloud Run Admin API コネクタを使用して Cloud Run ジョブを実行します。
- Cloud Storage バケットに影響するイベントに応答してワークフローを実行する Eventarc トリガーを作成します。
- Cloud Storage バケットの入力データファイルを更新して、ワークフローをトリガーします。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。
コンソール
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc, and Workflows APIs.
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.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Workflows Invoker.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc, and Workflows APIs.
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.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Workflows Invoker.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
- Cloud Storage からの直接イベントのトリガーを作成する前に、Cloud Storage サービス エージェントに Pub/Sub パブリッシャーのロール(
roles/pubsub.publisher)を付与します。- Google Cloud コンソールで、[IAM] ページに移動します。
- [Google 提供のロール付与を含みます] チェックボックスをオンにします。
- [プリンシパル] 列で、
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com形式の Cloud Storage サービス エージェントを探します。次に、対応する行の [プリンシパルを編集します] をクリックします。 - [ ロールを追加] または [ 別のロールを追加] をクリックします。
- [ロールを選択] リストで「Pub/Sub パブリッシャー」をフィルタして、ロールを選択します。
- [保存] をクリックします。
- Google Cloud コンソールで、[IAM] ページに移動します。
- 2021 年 4 月 8 日以前に、認証済みの Pub/Sub push リクエストをサポートするために Cloud Pub/Sub サービス エージェントを有効にした場合は、サービス アカウント トークン作成者のロール(
roles/iam.serviceAccountTokenCreator)をサービス エージェントに付与します。それ以外の場合、このロールはデフォルトで付与されます。- Google Cloud コンソールで、[IAM] ページに移動します。
- [Google 提供のロール付与を含みます] チェックボックスをオンにします。
- [名前] 列で、Cloud Pub/Sub サービス アカウントを見つけて、対応する行にある [プリンシパルを編集します] をクリックします。
- [ ロールを追加] または [ 別のロールを追加] をクリックします。
- [ロールを選択] リストで、[サービス アカウント トークン作成者] でフィルタして、ロールを選択します。
- [保存] をクリックします。
- Google Cloud コンソールで、[IAM] ページに移動します。
-
Google Cloud コンソールで Cloud Shell をアクティブにします。
Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
Cloud Shell では、このチュートリアルで擬似乱数を生成する
/dev/urandom コマンドがサポートされています。gcloud
gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。
このページの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。
Cloud Shell では、このチュートリアルで擬似乱数を生成する
/dev/urandomコマンドがサポートされています。- Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
- Google Cloud プロジェクトに対して課金が有効になっていることを確認します。
- Artifact Registry、Cloud Build、Cloud Run、Cloud Storage、Eventarc、Workflows API を有効にします。
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ storage.googleapis.com \ workflows.googleapis.com
- 他の Google Cloud サービスでの認証に使用するワークフローのサービス アカウントを作成し、適切なロールを付与します。
- サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAMEをサービス アカウントの名前に置き換えます。 - 前のステップで作成したユーザー管理のサービス アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。また、単一のコマンドで
--roleフラグを複数回使用することもできます。roles/eventarc.eventReceiver: イベントを受信しますroles/logging.logWriter: ログを書き込みますroles/run.admin: Cloud Run ジョブを実行しますroles/workflows.invoker: ワークフローを呼び出します
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=ROLE
以下を置き換えます。
PROJECT_ID: サービス アカウントを作成したプロジェクト IDROLE: ユーザー管理のサービス アカウントに付与するロール
- サービス アカウントを作成します。
- Cloud Storage からの直接イベントのトリガーを作成する前に、Cloud Storage サービス エージェントに Pub/Sub パブリッシャーのロール(
roles/pubsub.publisher)を付与します。SERVICE_ACCOUNT="$(gcloud storage service-agent --project=PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'
- 2021 年 4 月 8 日以前に、認証済みの Pub/Sub push リクエストをサポートするために Cloud Pub/Sub サービス エージェントを有効にした場合は、サービス アカウント トークン作成者のロール(
roles/iam.serviceAccountTokenCreator)をサービス エージェントに付与します。それ以外の場合、このロールはデフォルトで付与されます。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
PROJECT_NUMBER は、使用する Google Cloudプロジェクト番号に置き換えます。プロジェクト番号は、 Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドでも確認できます。
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Terraform
gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。
このページの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。
Cloud Shell では、このチュートリアルで擬似乱数を生成する
/dev/urandomコマンドがサポートされています。- Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
- Google Cloud プロジェクトに対して課金が有効になっていることを確認します。
- Artifact Registry、Cloud Build、Cloud Run、Cloud Storage、Eventarc、Workflows API を有効にします。
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ storage.googleapis.com \ workflows.googleapis.com
他の Google Cloud サービスでの認証に使用するワークフローのサービス アカウントを作成し、適切なロールを付与します。また、Cloud Storage からの直接イベントをサポートするために、Cloud Storage サービス エージェントに Pub/Sub パブリッシャーのロール(
roles/pubsub.publisher)を付与します。次のサンプルに示すように
main.tfファイルを変更します。詳細については、Terraform の Google プロバイダのドキュメントをご覧ください。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
一般的な Terraform ワークフローでは、プラン全体を一度に適用します。ですが、このチュートリアルでは、特定のリソースをターゲットにできます。次に例を示します。
terraform apply -target="google_service_account.workflows"- 2021 年 4 月 8 日以前に、認証済みの Pub/Sub push リクエストをサポートするために Cloud Pub/Sub サービス エージェントを有効にした場合は、サービス アカウント トークン作成者のロール(
roles/iam.serviceAccountTokenCreator)をサービス エージェントに付与します。それ以外の場合、このロールはデフォルトで付与されます。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
PROJECT_NUMBER は、使用する Google Cloudプロジェクト番号に置き換えます。プロジェクト番号は、 Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドでも確認できます。
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Cloud Run ジョブの作成
このチュートリアルでは、GitHub のサンプル Cloud Run ジョブを使用します。このジョブは、Cloud Storage の入力ファイルからデータを読み取り、ファイルの各行に対して任意の処理を実行します。
ローカルマシンにサンプルアプリのリポジトリのクローンを作成して、サンプルコードを取得します。
git clone https://github.com/GoogleCloudPlatform/jobs-demos.git
または、サンプルを ZIP ファイルとしてダウンロードし、ファイルを抽出することもできます。
サンプルコードが入っているディレクトリに移動します。
cd jobs-demos/parallel-processing
書き込みが可能でイベントをトリガーできる入力ファイルを保存するための Cloud Storage バケットを作成します。
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
- add [作成] をクリックします。
- [バケットの作成] ページで、バケットの名前を入力します。
input-PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの ID に置き換えます。 - 他の値はデフォルトのままにします。
- [作成] をクリックします。
gcloud
gcloud storage buckets createコマンドを実行します。gcloud storage buckets create gs://input-PROJECT_ID
リクエストが成功すると、コマンドから次のメッセージが返されます。
Creating gs://input-PROJECT_ID/...
Terraform
Cloud Storage バケットを作成するには、
google_storage_bucketリソースを使用して、次のサンプルに示すようにmain.tfファイルを変更します。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
一般的な Terraform ワークフローでは、プラン全体を一度に適用します。ですが、このチュートリアルでは、特定のリソースをターゲットにできます。次に例を示します。
terraform apply -target="random_id.bucket_name_suffix"
および
terraform apply -target="google_storage_bucket.default"- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
コンテナ イメージを保存できる Artifact Registry 標準リポジトリを作成します。
コンソール
Google Cloud コンソールで、Artifact Registry の [リポジトリ] ページに移動します。
[リポジトリを作成] をクリックします。
リポジトリの名前を入力します(例:
my-repo)。プロジェクト内のリポジトリのロケーションごとに、リポジトリ名は一意でなければなりません。デフォルトの形式(Docker)のままにします。
デフォルト モード(Standard)のままにします。
リージョンに、[us-central1(アイオワ)] を選択します。
その他すべてのデフォルトはそのままにします。
[作成] をクリックします。
gcloud
次のコマンドを実行します。
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=us-central1
REPOSITORYは、リポジトリの一意の名前(my-repoなど)に置き換えます。プロジェクト内のリポジトリのロケーションごとに、リポジトリ名は一意でなければなりません。Terraform
Artifact Registry リポジトリを作成するには、
google_artifact_registry_repositoryリソースを使用して、次のサンプルに示すようにmain.tfファイルを変更します。一般的な Terraform ワークフローでは、プラン全体を一度に適用します。ですが、このチュートリアルでは、特定のリソースをターゲットにできます。次に例を示します。
terraform apply -target="google_artifact_registry_repository.default"デフォルトの Google Cloud Buildpack を使用してコンテナ イメージをビルドします。
export SERVICE_NAME=parallel-job gcloud builds submit \ --pack image=us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/${SERVICE_NAME}
REPOSITORYを Artifact Registry リポジトリの名前に置き換えます。ビルドが完了するまで数分かかることがあります。
コンテナ イメージをデプロイする Cloud Run ジョブを作成します。
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
[ジョブを作成] をクリックして、[ジョブを作成] フォームを表示します。
- フォームで、Artifact Registry コンテナ イメージの URL として
us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latestを選択します。 - (省略可)ジョブ名に「
parallel-job」と入力します。 - (省略可)リージョンに、[us-central1(アイオワ)] を選択します。
- ジョブで実行するタスクの数として、「
10」と入力します。ジョブが成功するには、すべてのタスクが成功する必要があります。デフォルトでは、タスクは並行して実行されます。
- フォームで、Artifact Registry コンテナ イメージの URL として
[コンテナ、変数とシークレット、接続、セキュリティ] セクションを開き、次の設定を除き、すべてのデフォルトのままにします。
[全般] タブをクリックします。
- コンテナ コマンドに「
python」と入力します。 - コンテナ引数に「
process.py」と入力します。
- コンテナ コマンドに「
[変数とシークレット] タブをクリックします。
- [変数を追加] をクリックし、名前に「
INPUT_BUCKET」、値に「input-PROJECT_ID」と入力します。 - [変数を追加] をクリックし、名前に「
INPUT_FILE」、値に「input_file.txt」と入力します。
- [変数を追加] をクリックし、名前に「
ジョブを作成するには、[作成] をクリックします。
gcloud
デフォルトの Cloud Run リージョンを設定します。
gcloud config set run/region us-central1
Cloud Run ジョブを作成します。
gcloud run jobs create parallel-job \ --image us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latest \ --command python \ --args process.py \ --tasks 10 \ --set-env-vars=INPUT_BUCKET=input-PROJECT_ID,INPUT_FILE=input_file.txt
イメージタグを指定しない場合、Artifact Registry はデフォルトの
latestタグが付いたイメージを探します。ジョブの作成時に使用可能なオプションの一覧については、gcloud run jobs create コマンドライン ドキュメントをご覧ください。
ジョブが作成されると、成功したことを示すメッセージが表示されます。
Terraform
Cloud Run ジョブを作成するには、
google_cloud_run_v2_jobリソースを使用して、次のサンプルに示すようにmain.tfファイルを変更します。一般的な Terraform ワークフローでは、プラン全体を一度に適用します。ですが、このチュートリアルでは、特定のリソースをターゲットにできます。次に例を示します。
terraform apply -target="google_cloud_run_v2_job.default"
Cloud Run ジョブを実行するワークフローをデプロイする
作成した Cloud Run ジョブを実行するワークフローを定義してデプロイします。ワークフロー定義は、ワークフロー構文を使用して説明した一連のステップで構成されています。
コンソール
Google Cloud コンソールで、[ワークフロー] ページに移動します。
[ 作成] をクリックします。
新しいワークフローの名前を入力します(例:
cloud-run-job-workflow)。リージョンに、[us-central1(アイオワ)] を選択します。
[サービス アカウント] フィールドで、先ほど作成したサービス アカウントを選択します。
サービス アカウントは、ワークフローの ID として機能します。ワークフローで Cloud Run ジョブを実行できるようにするには、サービス アカウントに Cloud Run 管理者ロールがすでに付与されている必要があります。
[次へ] をクリックします。
ワークフロー エディタで、次のワークフローの定義を入力します。
[デプロイ] をクリックします。
gcloud
ワークフローのソースコード ファイルを作成します。
touch cloud-run-job-workflow.yaml次のワークフロー定義をソースコード ファイルにコピーします。
次のコマンドを入力してワークフローをデプロイします。
gcloud workflows deploy cloud-run-job-workflow \ --location=us-central1 \ --source=cloud-run-job-workflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
以下を置き換えます。
SERVICE_ACCOUNT_NAME: 先ほど作成したサービス アカウントの名前PROJECT_ID:Google Cloud プロジェクトの ID
サービス アカウントは、ワークフローの ID として機能します。ワークフローで Cloud Run ジョブを実行できるようにするには、サービス アカウントに
roles/run.adminのロールがすでに付与されている必要があります。
Terraform
ワークフローを作成するには、google_workflows_workflow リソースを使用して、次のサンプルに示すように main.tf ファイルを変更します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
一般的な Terraform ワークフローでは、プラン全体を一度に適用します。ですが、このチュートリアルでは、特定のリソースをターゲットにできます。次に例を示します。
terraform apply -target="google_workflows_workflow.default"
ワークフローは、次のことを行います。
initステップ - Cloud Storage イベントを引数として受け取り、必要な変数を設定します。check_input_fileステップ - イベントで指定された Cloud Storage バケットが Cloud Run ジョブで使用されているバケットかどうかを確認します。- 「はい」の場合、ワークフローは
run_jobステップに進みます。 - 「いいえ」の場合、ワークフローは終了し、それ以上の処理は停止します。
- 「はい」の場合、ワークフローは
run_jobステップ - Cloud Run Admin API コネクタのgoogleapis.run.v1.namespaces.jobs.runメソッドを使用して、ジョブを実行します。Cloud Storage バケットとデータファイル名が、ワークフローからジョブにオーバーライド変数として渡されます。finishステップ - ワークフローの結果としてジョブの実行に関する情報を返します。
ワークフローの Eventarc トリガーを作成する
入力データファイルが更新されるたびに自動的にワークフローを実行し、次に Cloud Run ジョブを実行するには、入力データファイルを含むバケットの Cloud Storage イベントに応答する Eventarc トリガーを作成します。
コンソール
Google Cloud コンソールで、[ワークフロー] ページに移動します。
ワークフローの名前(
cloud-run-job-workflowなど)をクリックします。[ワークフローの詳細] ページで [ 編集] をクリックします。
[ワークフローの編集] ページの [トリガー] セクションで、[新しいトリガーを追加] > [Eventarc] の順にクリックします。
[Eventarc トリガー] ペインが開きます。
[トリガー名] フィールドに、トリガーの名前を入力します(例:
cloud-run-job-workflow-trigger)。[イベント プロバイダ] リストで、[Cloud Storage] を選択します。
[イベント] リストから [google.cloud.storage.object.v1.finalized] を選択します。
[バケット] フィールドで、入力データファイルを含むバケットを選択します。バケット名の形式は
input-PROJECT_IDです。[サービス アカウント] フィールドで、先ほど作成したサービス アカウントを選択します。
サービス アカウントは、トリガーの ID として機能します。サービス アカウントには、次のロールがすでに付与されているはずです。
- Eventarc イベント受信者: イベントを受信します
- Workflows 起動元: Workflows を実行します
[トリガーを保存] をクリックします。
Eventarc トリガーは、[ワークフローの編集] ページの [トリガー] セクションに表示されます。
[次へ] をクリックします。
[デプロイ] をクリックします。
gcloud
次のコマンドを実行して、Eventarc トリガーを作成します。
gcloud eventarc triggers create cloud-run-job-workflow-trigger \ --location=us \ --destination-workflow=cloud-run-job-workflow \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=input-PROJECT_ID" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
次のように置き換えます。
PROJECT_ID: Google Cloud プロジェクトの IDSERVICE_ACCOUNT_NAME: 先ほど作成したサービス アカウントの名前
サービス アカウントは、トリガーの ID として機能します。サービス アカウントには、次のロールがすでに付与されているはずです。
roles/eventarc.eventReceiver: イベントを受信しますroles/workflows.invoker: Workflows を実行します
Terraform
トリガーを作成するには、google_eventarc_trigger リソースを使用して、次のサンプルに示すように main.tf ファイルを変更します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
一般的な Terraform ワークフローでは、プラン全体を一度に適用します。ですが、このチュートリアルでは、特定のリソースをターゲットにできます。次に例を示します。
terraform apply -target="google_eventarc_trigger.default"
入力データファイルを含む Cloud Storage バケットでファイルがアップロードまたは上書きされるたびに、ワークフローは対応する Cloud Storage イベントを引数として実行されます。
ワークフローをトリガーする
Cloud Storage の入力データファイルを更新して、エンドツーエンド システムをテストします。
入力ファイルの新しいデータを生成し、Cloud Run ジョブによって想定される Cloud Storage 内の場所にアップロードします。
base64 /dev/urandom | head -c 100000 >input_file.txt gcloud storage cp input_file.txt gs://input-PROJECT_ID/input_file.txt
Terraform を使用して Cloud Storage バケットを作成した場合は、次のコマンドを実行してバケットの名前を取得できます。
gcloud storage buckets list gs://input*
Cloud Run ジョブの実行には数分かかる場合があります。
ジョブ実行を表示して、Cloud Run ジョブが想定どおりに実行されたことを確認します。
gcloud config set run/region us-central1 gcloud run jobs executions list --job=parallel-job
ジョブの実行が成功したことが出力に示され、
10/10タスクが完了したことが示されます。
詳細については、イベントまたは Pub/Sub メッセージでワークフローをトリガーするをご覧ください。
クリーンアップ
このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。既存のプロジェクトを使用し、このチュートリアルで変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。
プロジェクトの削除
課金されないようにする最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- Google Cloud コンソールで [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
チュートリアル リソースの削除
このチュートリアルで作成したリソースを削除します。
Eventarc トリガーを削除します。
gcloud eventarc triggers delete cloud-run-job-workflow-trigger --location=us
ワークフローを削除します。
gcloud workflows delete cloud-run-job-workflow --location=us-central1
Cloud Run ジョブを削除します。
gcloud run jobs delete parallel-job
入力データ用に作成された Cloud Storage バケットを削除します。
gcloud storage rm --recursive gs://input-PROJECT_ID/
Artifact Registry リポジトリを削除します。
gcloud artifacts repositories delete REPOSITORY --location=us-central1