🙌

④INPUTSとOUTPUT Kestra

2023/05/22に公開

はじめに

今回はflow内で使用することができる INPUTS と OUTPUTS をみて行きたいと思います。

INPUTS

  • flowで使用するパラメータを事前に定義します

  • inputファイルの定義

    • nametypeは必ず定義しなければならないです
    • またデフォルト値を指定するためのdefaultを指定することもできます
inputs:
  - name: isTutorial
    type: BOOLEAN
    default: true
  • より詳細なことは、Inputsを参照ください

  • inputで指定したパラメータを利用する際は {{ inputs.name }}とすることでアクセスできます

< inputのサンプルファイル >

inputs:
  - name: url
    type: STRING
    default: "https://www.data.gouv.fr/fr/datasets/r/d33eabc9-e2fd-4787-83e5-a5fcfb5af66d"
id: kestra-tutorial
namespace: io.kestra.tutorial
labels:
  env: PRD
description: |
  # Kestra Tutorial
  As you notice, we can use markdown here.
inputs:
  - name: url
    type: STRING
    default: "https://www.data.gouv.fr/fr/datasets/r/d33eabc9-e2fd-4787-83e5-a5fcfb5af66d"
tasks:
  - id: download
    type: io.kestra.plugin.fs.http.Download
    uri: "{{ inputs.url }}"

OUTPUTS

  • 各taskの出力データを作成します
  • flow中に {{ outputs['task-id'] }} を使用してアクセスできます
  • またtask-idがない場合は直接 {{ outputs.taskId }} となります

< outputのサンプルファイル >

  - id: analyze-data
    type: io.kestra.core.tasks.scripts.Python
    inputFiles:
      data.csv: "{{outputs.download.uri}}"
      main.py: |
        import pandas as pd
        from kestra import Kestra
        data = pd.read_csv("data.csv", sep=";")
        data.info()
        sumOfConsumption = data['conso'].sum()
        Kestra.outputs({'sumOfConsumption': int(sumOfConsumption)})
    requirements:
      - pandas
id: kestra-tutorial
namespace: io.kestra.tutorial
labels:
  env: PRD
description: |
  # Kestra Tutorial
  As you notice, we can use markdown here.
Tasks:
  - id: download
    type: io.kestra.plugin.fs.http.Download
    uri: "https://www.data.gouv.fr/fr/datasets/r/d33eabc9-e2fd-4787-83e5-a5fcfb5af66d"
  - id: analyze-data
    type: io.kestra.core.tasks.scripts.Python
    inputFiles:
      data.csv: "{{outputs.download.uri}}"
      main.py: |
        import pandas as pd
        from kestra import Kestra
        data = pd.read_csv("data.csv", sep=";")
        data.info()
        sumOfConsumption = data['conso'].sum()
        Kestra.outputs({'sumOfConsumption': int(sumOfConsumption)})
    requirements:
      - pandas

参考文献

Discussion