Amazon DynamoDB · AWS

dynamochange

No existing tool was built for DynamoDB's unique model. dynamochange is purpose-built — GSI lifecycle management, TTL policies, streams, table class — all versioned in YAML and tracked in a history table inside DynamoDB itself.

19
CLI capabilities
8
YAML migration types
0
Existing tool
equivalents
dynamochange — prod deploy
# Deploy all pending DynamoDB migrations
$ dynamochange deploy --profile prod --tag release-2.0
✓ V1.0.0__create_orders.yaml
    (GSI: order-by-user-index created, backfill complete)
✓ V1.1.0__add_ttl.yaml
    (TTL enabled on expires_at)
✓ V1.2.0__add_stream.yaml
    (DynamoDB stream NEW_AND_OLD_IMAGES)
Deploy complete — 3 script(s) applied.
 
# Check drift between migrations and live table
$ dynamochange drift --profile prod
DRIFT: Table 'orders' — GSI 'order-by-status'
exists in cluster but not in any migration
 
$
Works with DynamoDB Local DynamoDB On-Demand DynamoDB Provisioned AWS CLI profiles IAM Roles GitHub Actions Claude Desktop MCP
Features

Built for DynamoDB.
Not a SQL afterthought.

Every feature maps to a real DynamoDB API — not a lowest-common-denominator abstraction that works for Postgres and kind-of-works for DynamoDB.

📋
YAML Migration Scripts
Express DynamoDB-native operations in YAML — table creation, GSI lifecycle, TTL, streams, table class, tags. SQL doesn't fit DynamoDB; YAML does.
YAML
🔍
GSI Lifecycle Management
Create, monitor, and drop GSIs with backfill polling. dynamochange waits for the GSI to become ACTIVE before the next migration runs — existing tools have no awareness of GSI lifecycle at all.
KEY DIFFERENTIATOR
🔄
Drift Detection
Compare live DynamoDB table state against your migration history — detect GSIs, TTL settings, streams, and table class that don't match what was declared.
DRIFT
🔐
Credential Isolation
Per-profile AWS credentials — each environment uses separate IAM roles, profiles, or access keys. Never bleeds production credentials into dev.
SECURITY
📊
History in DynamoDB
Migration history is stored in DynamoDB itself — no external database required. Three tracking tables: history, lock, audit. Fully queryable with standard DynamoDB tools.
STORAGE
🏷️
Release Tagging
Tag deploys with release names and roll back by tag. Apply a tag to stamp every migration in a release; rollback by tag to undo the whole release atomically.
RELEASE MGMT
🌱
Test Data Seeder
Seed DynamoDB tables with realistic test data — respects your attribute types and GSI key schemas. Works with local DynamoDB and DynamoDB Local.
TESTING
📈
Capacity Monitoring
Track table item counts, size bytes, and GSI status over time. Includes an HTML dashboard with history charts and drift alerts.
OBSERVABILITY
📄
Policy-as-Code Contracts
Enforce schema governance rules — require TTL on all tables, minimum GSI count, mandatory tags. Fails CI before bad schemas reach production.
GOVERNANCE
AI-Native Development

MCP Server.
AI Agents for DynamoDB.

dynamochange ships a Model Context Protocol server — letting Claude, Cursor, and any MCP-compatible AI assistant query your DynamoDB schema history, run drift detection, validate migrations, and plan deployments without leaving the chat.

MCP Capabilities

What AI agents can do

Connect your AI assistant to dynamochange and unlock schema-aware conversations — ask about pending migrations, get drift reports, validate YAML scripts before running them, or generate new migration files from a natural language description of the GSI or table change you need.

Query DynamoDB migration history and applied status
Run drift detection across GSIs, TTL, streams, and table class
Validate YAML scripts offline without an AWS connection
Generate scaffolded migration files from natural language
Get pre-deploy GSI backfill risk advisories
Inspect audit logs and compliance records
Ask "what changed in prod last week?" and get a structured answer
MCP Setup

One config. Any AI IDE.

The dynamochange MCP server exposes schema tools through the standard Model Context Protocol. Works with Claude Desktop, Cursor, Windsurf, and any editor with MCP support. Your AWS credentials stay local — the MCP server reads your existing dynamochange profiles.

# Claude Desktop — mcpServers config
"mcpServers": {
  "dynamochange": {
    "command": "dynamochange-mcp",
    "env": {"DYNAMO_PROFILE": "prod"}
  }
}
◑ Available
dynamochange MCP
Amazon DynamoDB · AWS
CLI Capabilities

19 Capabilities.
One consistent interface.

Every operation follows the same --profile flag, --dry-run support, and JSON output contract. Scripts in CI; humans at the terminal.

deploy
Apply pending YAML migrations in semver order. Polls GSI backfills to completion before proceeding. Supports tagging for incremental releases. Use --dry-run to preview without touching AWS.
rollback
Undo applied migrations by version or release tag. Executes paired undo YAML scripts in reverse order. Full audit record written for every rollback event.
validate
Offline YAML linting — no AWS connection required. Catches syntax errors, duplicate versions, missing undo scripts, and key schema conflicts before CI even starts.
status
Full migration history with timestamps, checksums, tags, and operator info. Shows what ran, what's pending, and what was rolled back — sortable by tag or version.
Drift detection
Compare live DynamoDB state against migration history. Detects GSI, TTL, stream, table class, and tag drift. Exits 1 on ERROR-severity findings — suitable as a CI gate.
Schema analysis
12 DynamoDB-specific rules — hot partition detection, missing GSIs, TTL gaps, table class mismatch, and capacity mode anomalies. Runs offline against your YAML scripts.
Policy contracts
Enforce policy-as-code governance rules — require TTL on all tables, mandatory tag keys, minimum GSI coverage. Block non-compliant schema changes in CI with GitHub annotation output.
Baseline generation
Introspect live DynamoDB tables and generate a V0.0.0 YAML baseline for existing infrastructure. Captures tables, GSIs, TTL, streams, and table class — ready to commit.
Test data seeding
Seed tables with realistic test data respecting DynamoDB attribute types and key schemas. Works with DynamoDB Local for fast offline iteration.
Capacity monitoring
Track table item counts, size bytes, and GSI status over time. HTML dashboard with history charts and drift alerts — exportable as JSON for external dashboards.
Comparison

dynamochange vs
the alternatives

The honest comparison nobody else publishes.

Capability dynamochange Generic tool A Generic tool B Terraform
Table creation / deletion
GSI lifecycle (create, monitor, drop)partial
TTL management
DynamoDB Streams
Table class (Standard / IA)
Migration history & audit trail
Versioned rollback
Drift detectionplan only
Per-environment credential isolation
GSI backfill monitoring
Policy-as-code contractspartial
MCP server for AI agents
Installation

Get started in
two minutes.

$ pip install dynamochange
Python 3.9+ · boto3 · pyyaml
# Then: dynamochange validate  ·  dynamochange deploy --profile local --dry-run