New to Kestra?
Use blueprints to kickstart your first workflows.
Publish application events and JSON data to AWS Kinesis Data Streams with Kestra. Send inline records or convert API payloads to ION for real-time bulk streaming.
Push high-volume application events and JSON payloads into AWS Kinesis Data Streams with Kestra, using either inline record definitions or data fetched from an HTTP API. This blueprint solves a recurring real-time ingestion problem: getting events from many sources into a Kinesis stream reliably and in bulk, without writing custom producer code or wiring up a standalone scheduler. It covers both ad-hoc event publishing and an API-to-stream pipeline, with the JSON-to-ION conversion that the Kinesis PutRecords API requires handled for you.
put_records_simple_map (io.kestra.plugin.aws.kinesis.PutRecords) writes two inline records (sign-in and sign-out) to the kestra stream, each tagged with a partitionKey, showing the simplest way to emit events.extract (io.kestra.plugin.core.http.Download) fetches a JSON dataset of user events from a public HTTP endpoint.json_to_ion (io.kestra.plugin.serdes.json.JsonToIon) converts the downloaded JSON into the Amazon ION format expected by Kinesis, with newLine: false.put_records (io.kestra.plugin.aws.kinesis.PutRecords) publishes the converted records to the kestra stream in a single bulk call, referencing {{ outputs.json_to_ion.uri }}.PutRecords accepts.GetRecords API.Kinesis ingests records but does not schedule or coordinate the producers that feed it. Kestra fills that gap: define the whole pipeline as declarative YAML, attach event or schedule triggers to drive ingestion, add retries so transient API or stream errors do not drop data, and keep full execution lineage across the download, conversion, and publish steps. You get observability and replayability that a raw PutRecords call cannot offer on its own.
kestra (or change streamName).kinesis:PutRecords on that stream.This flow does not reference any {{ secret('...') }} values; it relies on the AWS default credential chain. To use explicit credentials, add accessKeyId, secretKeyId, and region to the PutRecords tasks (or pluginDefaults) and store them with {{ secret('AWS_ACCESS_KEY_ID') }} and {{ secret('AWS_SECRET_KEY_ID') }}.
streamName on both PutRecords tasks.extract URL for your own API or replace it with a file or database source.partitionKey values to control shard distribution.Note: the data field sent to Kinesis must be a string. Wrap structured JSON objects as strings before publishing.