このチュートリアルでは、Cloud Scheduler を使用してワークフローを自動的に実行し、ワークローが特定のスケジュール(この場合は 5 分ごと)で実行されるようにする方法について説明します。
目標
- ランタイム引数を受け取ることができるワークフローを作成してデプロイします。
- ワークフローをトリガーし、正しい形式の JSON 引数を渡して 5 分ごとにワークフローを実行する Cloud Scheduler ジョブを作成します。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- App Engine アプリの作成など、Cloud Scheduler 用に環境を設定します。
Workflows API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。- このチュートリアルで使用するデフォルトのロケーションを設定します。
gcloud config set workflows/location REGION
REGIONは、サポートされている Workflows のロケーションに置き換えます。 - ワークフローが使用するサービス アカウントを作成します。例:
sa-namegcloud iam service-accounts create sa-name
- アカウントがワークフローをトリガーする権限を持つよう、サービス アカウントに
workflows.invokerのロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/workflows.invoker"
- サービス アカウントに
logging.logWriterロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter"
PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。ランタイム引数を受け取るワークフローを作成する
ワークフローは、Workflows 構文で記述された一連のステップで構成され、YAML 形式または JSON 形式のいずれでも記述できます。ワークフローを作成したら、デプロイして実行できるようにします。
コンソール
Google Cloud コンソールで、[ワークフロー] ページに移動します。
[作成] をクリックします。
新しいワークフローの名前として「
myFirstWorkflow」を入力します。リージョンには us-east1 を選択します。
以前に作成したサービス アカウントを選択します。
[次へ] をクリックします。
ワークフロー エディタで、次のワークフローの定義を入力します。
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
このワークフローは、ランタイムの引数として渡された姓と名の人に対する「Hello」というあいさつを返します。
[デプロイ] をクリックします。
gcloud
- ターミナルを開きます。
次のワークフロー定義を YAML または JSON ファイル(myFirstWorkflow.yaml や myFirstWorkflow.json など)として保存します。
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
このワークフローは、ランタイムの引数として渡された姓と名の人に対する「Hello」というあいさつを返します。
次のコマンドを入力してワークフローをデプロイします。
gcloud workflows deploy myFirstWorkflow \ --location=us-east1 \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
以前に作成したワークフロー定義ファイルの形式に応じて、
yaml_OR_jsonをyamlまたはjsonに置き換えます。
ワークフローをスケジュールする
以前に作成したサービス アカウントを使用して、ワークフローをトリガーする Cloud Scheduler ジョブを作成します。
コンソール
Google Cloud コンソールで [Cloud Scheduler] ページに移動します。
[ジョブを作成] をクリックします。
[名前] を
my-workflow-jobに設定します。[リージョン] で、[us-east1(サウスカロライナ)] を選択します。
[