🚀 New! Kestra raises $3 million to grow Learn more

Trigger Trigger

yaml
type: "io.kestra.plugin.fs.sftp.Trigger"

Trigger a flow as soon as new files are detected in a given SFTP server's directory.

Examples

Wait for one or more files in a given SFTP server's directory and process each of these files sequentially.

yaml
id: sftp_trigger_flow
namespace: dev

tasks:
  - id: for_each_file
    type: io.kestra.core.tasks.flows.EachSequential
    value: "{{ trigger.files | jq('.path') }}"
    tasks:
      - id: return
        type: io.kestra.core.tasks.debugs.Return
        format: "{{ taskrun.value }}"

triggers:
  - id: watch
    type: io.kestra.plugin.fs.sftp.Trigger
    host: localhost
    port: 6622
    username: foo
    password: bar
    from: "/in/"
    interval: PT10S
    action: MOVE
    moveDirectory: "/archive/"

Wait for one or more files in a given SFTP server's directory and process each of these files sequentially. In this example, we restrict the trigger to only wait for CSV files in the mydir directory.

yaml
id: ftp_wait_for_csv_in_mydir
namespace: dev

tasks:
  - id: each
    type: io.kestra.core.tasks.flows.EachSequential
    value: "{{ trigger.files | jq('.path') }}"
    tasks:
      - id: return
        type: io.kestra.core.tasks.debugs.Return
        format: "{{ taskrun.value }}"

triggers:
  - id: watch
    type: io.kestra.plugin.fs.sftp.Trigger
    host: localhost
    port: "6622"
    username: foo
    password: bar
    from: "mydir/"
    regExp: ".*.csv"
    action: MOVE
    moveDirectory: "archive/"
    interval: PTS

Properties

action

  • Type: string
  • Dynamic: ✔️
  • Required: ✔️
  • Possible Values:
    • MOVE
    • DELETE

The action to do on find files

from

  • Type: string
  • Dynamic: ✔️
  • Required: ✔️

The directory to list

host

  • Type: string
  • Dynamic: ✔️
  • Required: ✔️

Hostname of the remote server

conditions

  • Type: array
  • SubType: Condition
  • Dynamic:
  • Required:

List of Conditions in order to limit the flow trigger.

interval

  • Type: string
  • Dynamic:
  • Required:
  • Default: 60.000000000
  • Format: duration

The interval between test of triggers

keyfile

  • Type: string
  • Dynamic: ✔️
  • Required:

Private keyfile in the PEM file format to connect to a remote server using SSH

To generate a PEM format key from OpenSSH, use the following command: ssh-keygen -m PEM

moveDirectory

  • Type: string
  • Dynamic: ✔️
  • Required:

The destination directory in case off MOVE

passphrase

  • Type: string
  • Dynamic: ✔️
  • Required:

Passphrase of the ssh key

password

  • Type: string
  • Dynamic: ✔️
  • Required:

Password on the remote server

port

  • Type: string
  • Dynamic: ✔️
  • Required:
  • Default: 22

Port of the remote server

proxyHost

  • Type: string
  • Dynamic: ✔️
  • Required:

SFTP proxy host

proxyPassword

  • Type: string
  • Dynamic: ✔️
  • Required:

SFTP proxy password

proxyPort

  • Type: string
  • Dynamic: ✔️
  • Required:

SFTP proxy port

proxyType

  • Type: string
  • Dynamic: ✔️
  • Required:

SFTP proxy type

proxyUser

  • Type: string
  • Dynamic: ✔️
  • Required:

SFTP proxy user

recursive

  • Type: boolean
  • Dynamic:
  • Required:
  • Default: false

List file recursively

regExp

  • Type: string
  • Dynamic: ✔️
  • Required:

A regexp to filter on full path

rootDir

  • Type: boolean
  • Dynamic: ✔️
  • Required:
  • Default: true

Is path is relative to root dir

username

  • Type: string
  • Dynamic: ✔️
  • Required:

Username on the remote server

Outputs

files

The bucket of the downloaded file

Definitions

File

accessDate

  • Type: string
  • Dynamic:
  • Required:

fileType

  • Type: string
  • Dynamic:
  • Required:
  • Possible Values:
    • FOLDER
    • FILE
    • FILE_OR_FOLDER
    • IMAGINARY

flags

  • Type: integer
  • Dynamic:
  • Required:

groupId

  • Type: integer
  • Dynamic:
  • Required:

name

  • Type: string
  • Dynamic:
  • Required:

path

  • Type: string
  • Dynamic:
  • Required:

permissions

  • Type: integer
  • Dynamic:
  • Required:

size

  • Type: integer
  • Dynamic:
  • Required:
  • Type: boolean
  • Dynamic:
  • Required:
  • Default: false

updatedDate

  • Type: string
  • Dynamic:
  • Required:

userId

  • Type: integer
  • Dynamic:
  • Required: