ワークフローの記述法について

ワークフローの記述法について

2024/07/09 更新

  • 概要
  • Earkの独自記述法について
  • コネクターの実行
  • スクリプトの実行
  • コネクターとスクリプトを一つのワークフローで実行する場合

概要

Earkのワークフローは Google Cloud Workflows を採用しております。

Workflows | Google Cloud

Google Cloud プロダクトと HTTP ベースの API(プライベート エンドポイントや SaaS を含む)のサーバーレス ワークフロー オーケストレーション。

Workflows | Google Cloud

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.

Syntax overview  |  Workflows  |  Google Cloud

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.

Connectors reference  |  Workflows  |  Google Cloud

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)