Skip to content

DynamoDB ​

Reads items from one table. Use cdc_mode: snapshot for a one-off copy, or turn on DynamoDB streams and use snapshot_then_cdc to keep the destination in step.

Before you begin ​

  • IAM that can Scan the table. For CDC, also DescribeStream / GetRecords on the table's stream.
  • Streams enabled on the table when you use a CDC mode.
  • region matching the table.
bash
export AWS_DEFAULT_REGION="us-east-1"

Configure ​

python
from skippr import Config, DataSourceDynamodb, Pipeline

cfg = Config.discover()
src = cfg.data_source(
    "app",
    DataSourceDynamodb(table_name="orders", region="us-east-1", cdc_mode="snapshot"),
)
cfg.pipeline("orders", Pipeline(data_source=src))
cfg.save()
bash
skipprd connect data-source dynamodb \
  --pipeline orders \
  --name app \
  --table-name orders \
  --region us-east-1 \
  --cdc-mode snapshot
yaml
data_sources:
  app:
    Dynamodb:
      table_name: orders
      region: us-east-1
      cdc_mode: snapshot

Options ​

KeyTypeRequired/DefaultDescription
table_namestringRequiredDynamoDB table
regionstringRequiredAWS region
endpoint_urlURLNot setLocal or compatible endpoint
formatstringNot setItem format override
batch_size_bytesintegerNot setMax bytes per batch
batch_size_secondsintegerNot setMax seconds per batch
cdc_modestringsnapshotsnapshot, snapshot_then_cdc, or cdc_only

What gets synced ​

Each item becomes a row. Snapshot copies the table once. CDC modes apply inserts, updates, and deletes — see Change data capture.

Troubleshooting ​

SymptomFix
AccessDeniedExceptionGrant Scan (and stream read for CDC)
Stream not foundEnable DynamoDB Streams, then use a CDC mode
Wrong regionMatch region to the table

Next steps ​