Open6
Cloud Storageトリガー
Cloud Run Job と Workflow のメモ
GCSの更新のトリガーでCloud RunのJob起動
Cloud Storage TriggerでCloud Function起動
GCSの更新をトリガーにCloud Run Jobsを起動 (Workflowを使う)
- Workflowのコードサンプル
有効化が必要なAPI
- Cloud Build
- Cloud Run
- Cloud Storage
- Eventarc
- Workflows API
手順
- Cloud Run Jobsをデプロイ
- SAは必要に応じて作成。またはデフォルトのエージェント
- Workflowをデプロイ
- ワークフローのソースにCloud Runを呼び出すコードを記載
- Triggerをデプロイ
- デプロイしたワークフローの詳細画面かEventarcのコンソールからTriggerを定義
上記を実施するとTriggerで指定したバケット上にファイルを作成・更新することでトリガーが起動される。
※ サービスエージェント service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
に roles/pubsub.publisher
を付与する
Tutorialで作成されているSAについて
TutorialではEventarcとWorkflowの両方に同じSAをアタッチしている。
付与されているロールは下記。
- Cloud Run Admin
- Eventarc Event Receiver
- Logs Writer
- Workflows Invoker
Cloud Run 起動
workflows syntax
-
main
メインワークフローの指定。サブワークフローの定義もある。 -
params: [event]
実行時引数。[]
内に引数名を指定。[event]
の場合、event
の名前で引数を参照できる -
steps
- 処理のステップを記載。ネストも可。
- 各要素にはステップ名を記載し、処理内容をマップのvalueとして定義する。
- 以下の場合、
init
という名前のステップにてproject_id
という変数へのアサインを行うことになる。- init: assign: - project_id: プロジェクトID
main:
params: [event]
steps:
- init:
assign:
- project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
- event_bucket: ${event.data.bucket}
- event_file: ${event.data.name}
- target_bucket: personal-data-august-gantry-325007-us-central1
- job_name: parallel-job
- job_location: us-central1
- check_input_file:
switch:
- condition: ${event_bucket == target_bucket}
next: run_job
- condition: true
next: end
- run_job:
call: googleapis.run.v1.namespaces.jobs.run
args:
name: ${"namespaces/" + project_id + "/jobs/" + job_name}
location: ${job_location}
body:
overrides:
containerOverrides:
env:
- name: INPUT_BUCKET
value: ${event_bucket}
- name: INPUT_FILE
value: ${event_file}
result: job_execution
- finish:
return: ${job_execution}
Call
- 基本httpリクエストを用いることが多い
- でもconnectorも使える(Cloud Run Jobsはconnectorを使う)
httpリクエストの使い方