Trigger a flow as soon as new files are detected in a given FTP server's directory.
type: "io.kestra.plugin.fs.ftp.Trigger"
Wait for one or more files in a given FTP server's directory and process each of these files sequentially.
id: ftp_trigger_flow
namespace: company.team
tasks:
- id: for_each_file
type: io.kestra.plugin.core.flow.ForEach
values: "{{ trigger.files }}"
tasks:
- id: return
type: io.kestra.plugin.core.debug.Return
format: "{{ taskrun.value | jq('.path') }}"
triggers:
- id: watch
type: io.kestra.plugin.fs.ftp.Trigger
host: localhost
port: 21
username: foo
password: bar
from: "/in/"
interval: PT10S
action: MOVE
moveDirectory: "/archive/"
Wait for one or more files in a given FTP server's directory and process each of these files sequentially. Delete files manually after processing to prevent infinite triggering.
id: ftp_trigger_flow
namespace: company.team
tasks:
- id: for_each_file
type: io.kestra.plugin.core.flow.ForEach
values: "{{ trigger.files }}"
tasks:
- id: return
type: io.kestra.plugin.core.debug.Return
format: "{{ taskrun.value | jq('.name') }}"
- id: delete
type: io.kestra.plugin.fs.ftp.Delete
host: localhost
port: 21
username: foo
password: bar
uri: "/in/{{ taskrun.value | jq('.name') }}"
triggers:
- id: watch
type: io.kestra.plugin.fs.ftp.Trigger
host: localhost
port: 21
username: foo
password: bar
from: "/in/"
interval: PT10S
action: NONE
Wait for one or more files in a given FTP 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: company.team
tasks:
- id: each
type: io.kestra.plugin.core.flow.ForEach
values: "{{ trigger.files }}"
tasks:
- id: return
type: io.kestra.plugin.core.debug.Return
format: "{{ taskrun.value | jq('.path') }}"
triggers:
- id: watch
type: io.kestra.plugin.fs.ftp.Trigger
host: localhost
port: "21"
username: foo
password: bar
from: "mydir/"
regExp: ".*.csv"
action: MOVE
moveDirectory: "archive/"
interval: PTS
YES
MOVE
DELETE
NONE
The action to perform on the retrieved files. If using 'NONE' make sure to handle the files inside your flow to avoid infinite triggering.
YES
The directory to list
YES
Hostname of the remote server
NO
60
duration
The interval between test of triggers
YES
The destination directory in case off MOVE
NO
{
"connectionTimeout": "PT30S",
"dataTimeout": "PT30S",
"socketTimeout": "PT30S",
"controlKeepAliveTimeout": "PT30S",
"controlKeepAliveReplyTimeout": "PT30S"
}
YES
true
YES
Password on the remote server
YES
21
Port of the remote server
YES
FTP proxy host
YES
FTP proxy port
YES
DIRECT
HTTP
SOCKS
FTP proxy type
YES
false
YES
A regexp to filter on full path
YES
true
YES
true
NO
CREATED
RUNNING
PAUSED
RESTARTED
KILLING
SUCCESS
WARNING
FAILED
KILLED
CANCELLED
QUEUED
RETRYING
RETRIED
SKIPPED
List of execution states after which a trigger should be stopped (a.k.a. disabled).
YES
Username on the remote server
NO
date-time
NO
FOLDER
FILE
FILE_OR_FOLDER
IMAGINARY
NO
NO
NO
NO
uri
NO
NO
NO
false
NO
date-time
NO
YES
PT30S
duration
The timeout for the initial control connection.
YES
PT30S
duration
The control keep alive reply timeout.
to ensure the socket be alive after download huge file.
YES
PT30S
duration
the control keep alive timeout.
to ensure the socket be alive after download huge file.
YES
PT30S
duration
The timeout for opening the data channel.
YES
PT30S
duration
The socket timeout.