Trigger
type: "io.kestra.plugin.aws.s3.Trigger"
Wait for files on S3 bucket.
This trigger will poll every interval
s3 bucket. You can search for all files in a bucket or directory in from
or you can filter the files with a regExp
. The detection is atomic, internally we do a list and interact only with files listed.
Once a file is detected, we download the file on internal storage and processed with declared action
in order to move or delete the files from the bucket (to avoid double detection on new poll).
Examples
Wait for a list of files on a s3 bucket and iterate through the files.
id: s3-listen
namespace: io.kestra.tests
tasks:
- id: each
type: io.kestra.core.tasks.flows.EachSequential
tasks:
- id: return
type: io.kestra.core.tasks.debugs.Return
format: "{{ taskrun.value }}"
value: "{{ trigger.objects | jq('.[].uri') }}"
triggers:
- id: watch
type: io.kestra.plugin.aws.s3.Trigger
interval: "PT5M"
accessKeyId: "<access-key>"
secretKeyId: "<secret-key>"
region: "eu-central-1"
bucket: "my-bucket"
prefix: "sub-dir"
action: MOVE
moveTo:
key: archive
Wait for a list of files on a s3 bucket and iterate through the files. Delete files manually after processing to prevent infinite triggering.
id: s3-listen
namespace: io.kestra.tests
tasks:
- id: each
type: io.kestra.core.tasks.flows.EachSequential
tasks:
- id: return
type: io.kestra.core.tasks.debugs.Return
format: "{{ taskrun.value }}"
- id: delete
type: io.kestra.plugin.aws.s3.Delete
accessKeyId: "<access-key>"
secretKeyId: "<secret-key>"
region: "eu-central-1"
bucket: "my-bucket"
key: "{{ taskrun.value }}"
value: "{{ trigger.objects | jq('.[].key') }}"
triggers:
- id: watch
type: io.kestra.plugin.aws.s3.Trigger
interval: "PT5M"
accessKeyId: "<access-key>"
secretKeyId: "<secret-key>"
region: "eu-central-1"
bucket: "my-bucket"
prefix: "sub-dir"
action: NONE
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.
bucket
- Type: string
- Dynamic: ✔️
- Required: ✔️
The S3 bucket where to download the file.
accessKeyId
- Type: string
- Dynamic: ✔️
- Required: ❌
Access Key Id in order to connect to AWS.
If no connection is defined, we will use the
DefaultCredentialsProvider
to fetch the value.
conditions
- Type: array
- SubType: Condition
- Dynamic: ❌
- Required: ❌
List of conditions in order to limit the flow trigger.
delimiter
- Type: string
- Dynamic: ✔️
- Required: ❌
A delimiter is a character you use to group keys.
encodingType
- Type: string
- Dynamic: ✔️
- Required: ❌
The EncodingType property for this object.
endpointOverride
- Type: string
- Dynamic: ✔️
- Required: ❌
The endpoint with which the SDK should communicate.
This property should normally not be used except for local development.
expectedBucketOwner
- Type: string
- Dynamic: ✔️
- Required: ❌
The account ID of the expected bucket owner.
If the bucket is owned by a different account, the request fails with the HTTP status code 403 Forbidden (access denied).
filter
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
BOTH
- Possible Values:
FILES
DIRECTORY
BOTH
The type of objects to filter: files, directory, or both.
interval
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
60.000000000
- Format:
duration
Interval between polling.
The interval between 2 different polls of schedule, this can avoid to overload the remote system with too many calls. For most of the triggers that depend on external systems, a minimal interval must be at least PT30S. See ISO_8601 Durations for more information of available interval values.
marker
- Type: string
- Dynamic: ✔️
- Required: ❌
Marker is where you want Amazon S3 to start listing from.
Amazon S3 starts listing after this specified key. Marker can be any key in the bucket.
maxKeys
- Type: integer
- Dynamic: ✔️
- Required: ❌
- Default:
1000
Sets the maximum number of keys returned in the response.
By default, the action returns up to 1,000 key names. The response might contain fewer keys but will never contain more.
moveTo
- Type: Copy-CopyObject
- Dynamic: ✔️
- Required: ❌
The destination bucket and key for MOVE
action.
prefix
- Type: string
- Dynamic: ✔️
- Required: ❌
Limits the response to keys that begin with the specified prefix.
regexp
- Type: string
- Dynamic: ✔️
- Required: ❌
A regexp to filter on full key.
ex:
regExp: .*
to match all filesregExp: .*2020-01-0.\\.csv
to match files between 01 and 09 of january ending with.csv
region
- Type: string
- Dynamic: ✔️
- Required: ❌
AWS region with which the SDK should communicate.
requestPayer
- Type: string
- Dynamic: ✔️
- Required: ❌
Sets the value of the RequestPayer property for this object.
secretKeyId
- Type: string
- Dynamic: ✔️
- Required: ❌
Secret Key Id in order to connect to AWS.
If no connection is defined, we will use the
DefaultCredentialsProvider
to fetch the value.
sessionToken
- Type: string
- Dynamic: ✔️
- Required: ❌
AWS session token, retrieved from an AWS token service, used for authenticating that this user has received temporary permissions to access a given resource.
If no connection is defined, we will use the
DefaultCredentialsProvider
to fetch the value.
stopAfter
- Type: array
- SubType: string
- Dynamic: ❌
- Required: ❌
List of execution states after which a trigger should be stopped (a.k.a. disabled).
stsEndpointOverride
- Type: string
- Dynamic: ✔️
- Required: ❌
The AWS STS endpoint with which the SDKClient should communicate.
stsRoleArn
- Type: string
- Dynamic: ✔️
- Required: ❌
AWS STS Role.
The Amazon Resource Name (ARN) of the role to assume. If set the task will use the
StsAssumeRoleCredentialsProvider
. Otherwise, theStaticCredentialsProvider
will be used with the provided Access Key Id and Secret Key.
stsRoleExternalId
- Type: string
- Dynamic: ✔️
- Required: ❌
AWS STS External Id.
A unique identifier that might be required when you assume a role in another account. This property is only used when an
stsRoleArn
is defined.
stsRoleSessionDuration
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
900.000000000
- Format:
duration
AWS STS Session duration.
The duration of the role session (default: 15 minutes, i.e., PT15M). This property is only used when an
stsRoleArn
is defined.
stsRoleSessionName
- Type: string
- Dynamic: ✔️
- Required: ❌
AWS STS Session name. This property is only used when an stsRoleArn
is defined.
Outputs
objects
- Type: array
- SubType: S3Object
- Dynamic: ❓
- Required: ❌
The list of S3 objects.
Definitions
io.kestra.plugin.aws.s3.models.S3Object
Properties
etag
- Type: string
- Dynamic: ❓
- Required: ❓
key
- Type: string
- Dynamic: ❓
- Required: ❓
lastModified
- Type: string
- Dynamic: ❓
- Required: ❓
- Format:
date-time
owner
- Type: Owner
- Dynamic: ❓
- Required: ❓
size
- Type: integer
- Dynamic: ❓
- Required: ❓
uri
- Type: string
- Dynamic: ❓
- Required: ❓
- Format:
uri
io.kestra.plugin.aws.s3.models.Owner
Properties
displayName
- Type: string
- Dynamic: ❓
- Required: ❓
id
- Type: string
- Dynamic: ❓
- Required: ❓
io.kestra.plugin.aws.s3.Copy-CopyObject
Properties
bucket
- Type: string
- Dynamic: ✔️
- Required: ❌
The bucket name
key
- Type: string
- Dynamic: ✔️
- Required: ❌
The bucket key