2024/07/09 更新
- 概要
- Earkの独自記述法について
- コネクターの実行
- スクリプトの実行
- コネクターとスクリプトを一つのワークフローで実行する場合
概要
Earkのワークフローは Google Cloud Workflows を採用しております。
Workflows | Google Cloud
Google Cloud プロダクトと HTTP ベースの API(プライベート エンドポイントや SaaS を含む)のサーバーレス ワークフロー オーケストレーション。
cloud.google.com
Workflowsでの記述法はEarkのワークフローでそのまま使用可能ですが、以下の制約がございます。
- Yamlの本文は必ず以下のように
main:のsteps:から始めること。
main:
steps:
これは後でご説明するEark独自の記述を変換するために必要となります。 このルールを無視した場合は正しく動作しない場合があります。
下記は、ワークフローの基本的な記述になります。
main:
steps:
- sample_step1:
# なんらかの処理1(例。S3のデータをGCSにコピー)
- sample_step2:
# なんらかの処理2(例。GCSのデータをBigQueryにロード)
- sample_step3:
# なんらかの処理3(例。BigQueryのデータのレコードを確認)
基本的に steps: 以下の各stepが1つの処理のイメージになります。
上記の例ですと全部で3stepあり、それぞれ上から順に実行され、途中で何かのエラーがある場合はそこで処理が止まります。
yamlの記述法次第では分岐やgotoのようなことも可能です。 詳しくは公式ドキュメントをご参考ください。
Syntax overview | Workflows | Google Cloud
The Workflows syntax reference details the format for creating workflows.
cloud.google.com
Google Cloud Platform内であれば公式のコネクターも用意されていますので、使う用途に応じて使用してください。
公式のコネクター一覧
Connectors reference | Workflows | Google Cloud
Workflows publishes connectors that make it easier to access other Google Cloud products within a workflow. This document details the correct Workflows syntax for the available connectors.
cloud.google.com
Earkの独自記述法について
Eark内で定義したコネクター(Embulk)やスクリプト(Python)をワークフローで回す場合は通常の Google Cloud Workflows の記述法とは異なるEarkの独自の記述法に従い作成する必要があります。
コネクターやスクリプトの実行する場合の例は以下をご参考ください。
コネクターの実行
Eark内にコネクターを作成していることを前提とします。
作成したコネクターの名前をここでは sample_connector_1 とします。
以下、sample_connector_1 をワークフローで実行する例となります。
説明をなくしてYamlだけ記載しますと以下のようになります。
main:
steps:
- CONNECTOR_test1:
name: "sample_connector_1"
complete: "hogehoge2"
- hogehoge1:
call: sys.log
args:
text: "hogehoge1のstepです。"
- hogehoge2:
call: sys.log
args:
text: "hogehoge2のstepです。"
スクリプトの実行
コネクターの実行と同様にEark内にコネクターを作成していることを前提とします。
作成したコネクターの名前をここでは sample_script_1 とします。
以下、sample_script_1 をワークフローで実行する例となります。
説明をなくしてYamlだけ記載しますと以下のようになります。
main:
steps:
- PYTHON_test1:
name: "sample_script_1"
complete: "hogehoge2"
- hogehoge1:
call: sys.log
args:
text: "hogehoge1のstepです。"
- hogehoge2:
call: sys.log
args:
text: "hogehoge2のstepです。"
コネクターとスクリプトを一つのワークフローで実行する場合
一つのワークフロー内にコネクターやスクリプトを両方実行する場合もあります。 その場合は以下のような記述になります。
- 例1)
- 例2)