Trigger
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.
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.
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: ❌
symbolicLink
- Type: boolean
- Dynamic: ❓
- Required: ❌
- Default:
false
updatedDate
- Type: string
- Dynamic: ❓
- Required: ❌
userId
- Type: integer
- Dynamic: ❓
- Required: ❌