Trigger
type: "io.kestra.plugin.fs.ftp.Trigger"
Trigger a flow as soon as new files are detected in a given FTP server's directory.
Examples
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.EachSequential
value: "{{ 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.EachSequential
value: "{{ 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.EachSequential
value: "{{ 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
Properties
action
- Type: string
- Dynamic: ✔️
- Required: ✔️
- Possible Values:
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.
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
moveDirectory
- Type: string
- Dynamic: ✔️
- Required: ❌
**The destination directory in case off MOVE
**
passiveMode
- Type: boolean
- Dynamic: ❌
- Required: ❌
- Default:
true
Whether to use a passive mode. Passive mode is generally considered more secure as it's less likely to encounter issues with NAT and firewalls. Therefore, this property is by default set to true
. To use active mode instead, set the property to false
.
password
- Type: string
- Dynamic: ✔️
- Required: ❌
Password on the remote server
port
- Type: string
- Dynamic: ✔️
- Required: ❌
- Default:
21
Port of the remote server
proxyHost
- Type: string
- Dynamic: ✔️
- Required: ❌
FTP proxy host
proxyPort
- Type: string
- Dynamic: ✔️
- Required: ❌
FTP proxy port
proxyType
- Type: string
- Dynamic: ✔️
- Required: ❌
- Possible Values:
DIRECT
HTTP
SOCKS
FTP proxy type
recursive
- Type: boolean
- Dynamic: ❓
- Required: ❌
- Default:
false
List file recursively
regExp
- Type: string
- Dynamic: ✔️
- Required: ❌
A regexp to filter on full path
remoteIpVerification
- Type: boolean
- Dynamic: ❌
- Required: ❌
- Default:
true
Control that the server ip that emit the request is the same than send response.
rootDir
- Type: boolean
- Dynamic: ❌
- Required: ❌
- Default:
true
Is the path relative to the users home directory
stopAfter
- Type: array
- SubType: string
- Dynamic: ❌
- Required: ❌
List of execution states after which a trigger should be stopped (a.k.a. disabled).
username
- Type: string
- Dynamic: ✔️
- Required: ❌
Username on the remote server
Outputs
files
Metadata of downloaded files.
outputFiles
- Type: object
- SubType: string
- Required: ❌
The downloaded files as a map of from/to URIs.
Definitions
io.kestra.plugin.fs.vfs.models.File
Properties
accessDate
- Type: string
- Dynamic: ❓
- Required: ❓
- Format:
date-time
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: ❓
- Format:
uri
permissions
- Type: integer
- Dynamic: ❓
- Required: ❓
size
- Type: integer
- Dynamic: ❓
- Required: ❓
symbolicLink
- Type: boolean
- Dynamic: ❓
- Required: ❓
- Default:
false
updatedDate
- Type: string
- Dynamic: ❓
- Required: ❓
- Format:
date-time
userId
- Type: integer
- Dynamic: ❓
- Required: ❓
Was this page helpful?