Trigger 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 file 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
    accessKeyId: "<access-key>"
    secretKeyId: "<secret-key>"
    region: "eu-central-1"
    interval: "PT5M"
    bucket: "my-bucket"
    prefix: "sub-dir"
    action: MOVE
    moveTo: 
      key: archive

# Properties

# accessKeyId

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

The Access Key Id in order to connect to AWS

If no connection is defined, we will use default DefaultCredentialsProvider that will try to guess the value

# action

  • Type: string

  • Dynamic: ✔️

  • Required:

  • Possible Values:

    • MOVE
    • DELETE

The action to do on find files

# bucket

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

The bucket where to download the file

# 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.

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 filter files or directory

# interval

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

Interval between polling

The interval between 2 different test of schedule, this can avoid to overload the remote system with too many call. For most of trigger that depend on external system, a minimal interval must be at least PT30S.
See ISO_8601 Durations (opens new window) for more information of available interval value

# 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

The destination bucket and key.

# 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 files
regExp: .*2020-01-0.\\.csv to match files between 01 and 09 of january ending with .csv

# region

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

The 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:

The Secret Key Id in order to connect to AWS

If no connection is defined, we will use default DefaultCredentialsProvider that will try to guess the value

# sessionToken

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

The he AWS session token, retrieved from an AWS token service, used for authenticating that this user has received temporary permission to access some resource.

If no connection is defined, we will use default DefaultCredentialsProvider that will try to guess the value

# Outputs

# objects

The list of objects

# Definitions

# S3Object

# etag

  • Type: string
  • Dynamic:
  • Required:

# key

  • Type: string
  • Dynamic:
  • Required:

# lastModified

  • Type: string
  • Dynamic:
  • Required:

# owner

  • Type: Owner
  • Dynamic:
  • Required:

# size

  • Type: integer
  • Dynamic:
  • Required:

# uri

  • Type: string
  • Dynamic:
  • Required:

# Owner

# displayName

  • Type: string
  • Dynamic:
  • Required:

# id

  • Type: string
  • Dynamic:
  • Required:

# CopyObject

# bucket

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

The bucket name

# key

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

The bucket key