New to Kestra?
Use blueprints to kickstart your first workflows.
Scan an AWS DynamoDB table with Kestra, fetch every row as JSON, and hand the data to a downstream script for transformation, export, or loading.
id: scan-dynamodb-table
namespace: company.team
tasks:
- id: extract_data
type: io.kestra.plugin.aws.dynamodb.Scan
tableName: demo
fetchType: FETCH
region: "{{ secret('AWS_DEFAULT_REGION') }}"
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_ACCESS_KEY') }}"
- id: process_data
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- echo {{ outputs.extract_data.rows }}
Pull data out of an Amazon DynamoDB table and feed it straight into a processing step. This blueprint runs a full table scan against DynamoDB, returns the matching items as structured rows, and passes them to a shell task so you can transform, validate, export, or load the records anywhere your pipeline needs them. It closes the common gap between a NoSQL key-value store and the rest of your data stack, where DynamoDB has the data but no built-in way to schedule extraction and route it downstream.
extract_data task (io.kestra.plugin.aws.dynamodb.Scan) scans the table named demo with fetchType: FETCH, so every matching item is returned inline as outputs.extract_data.rows. Region and credentials are injected from secrets via region, accessKeyId, and secretKeyId.process_data task (io.kestra.plugin.scripts.shell.Commands) runs on the io.kestra.plugin.core.runner.Process task runner and consumes {{ outputs.extract_data.rows }}, the JSON payload produced by the scan.DynamoDB stores data but has no native scheduler, retry policy, or way to chain extraction into downstream processing. Kestra adds event and schedule triggers, automatic retries on transient AWS errors, full execution lineage and logs for every scan, and a declarative YAML definition you can version control and review. The result is a reliable, observable extraction pipeline instead of an ad hoc script that no one can monitor.
demo, change tableName to your own).AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGIONtableName on extract_data to the table you want to scan.extract_data outputs to confirm the rows come back.process_data commands to do something useful with the data.process_data step for a load task that writes to S3, Postgres, BigQuery, or Snowflake.