DocsAWS 101Blog
← Back to Blog

v1.3.20 — Native HTTPS, API Gateway JWT + HTTP proxy mapping, DynamoDB Streams, DDB→Kinesis

April 29, 2026 · v1.3.20

1.3.20 is the first release where API Gateway can enforce JWT authorizers and apply HTTP / HTTP_PROXY request parameter mappings, the DynamoDB Streams API is reachable from boto3.client("dynamodbstreams") instead of just driving the internal Lambda ESM path, DynamoDB tables can fan item mutations out to Kinesis as a streaming destination, and the gateway can speak TLS natively without a separate terminator. Plus a sweep of small AWS-shape fixes that close the kind of gaps Java SDK v2 and the AWS CLI notice quietly.

1. Native HTTPS via USE_SSL

The gateway listener now speaks TLS when USE_SSL=1 (also accepts true / yes). The flag name aligns with LocalStack's USE_SSL so a compose.yml switching emulator doesn't need TLS-specific changes. By default MiniStack auto-generates a self-signed RSA cert (CN: ministack-local, SAN: localhost, ministack, 127.0.0.1, ::1) cached under ${TMPDIR}/ministack-tls/ so the cert survives restarts. To pin a specific cert (e.g. an mkcert-issued one for browser trust), set MINISTACK_SSL_CERT and MINISTACK_SSL_KEY to PEM paths.

Auto-generation shells out to the openssl CLI (already present in both the Alpine and Debian images), so no Python crypto dependency is added. Unblocks AWS SDKs that hardcode https:// against Cognito Hosted UI endpoints (e.g. Amplify v6) without needing a separate TLS-terminating proxy. Closes #526. Contributed by @prandogabriel.

USE_SSL=1 docker run --rm -p 4566:4566 ministackorg/ministack:1.3.20

curl -k https://localhost:4566/_ministack/health

2. API Gateway: JWT enforcement, HTTP proxy parameter mapping, non-blocking I/O

Both HTTP API (apigateway) and REST API (apigateway_v1) gain three coordinated features:

Contributed by @marcin-nowak-scl.

3. DynamoDB Streams — public read API

A new module, ministack/services/dynamodb_streams.py, exposes ListStreams, DescribeStream, GetShardIterator, and GetRecords via boto3.client("dynamodbstreams") and the streams.dynamodb.{region}.amazonaws.com host. It reads the records already captured by the main DynamoDB service (emitted from PutItem, UpdateItem, DeleteItem, TransactWriteItems, and BatchWriteItem) so the public Streams API and the internal Lambda ESM path share one source of truth.

All four iterator types (TRIM_HORIZON, LATEST, AT_SEQUENCE_NUMBER, AFTER_SEQUENCE_NUMBER) and all four stream view types (NEW_AND_OLD_IMAGES, NEW_IMAGE, OLD_IMAGE, KEYS_ONLY) are supported. Single synthetic shard per stream; opaque base64 iterator tokens. Unblocks DynamoDbOutboxWorker-style consumers and any test harness that wants to DescribeStream + GetShardIterator + GetRecords directly. Contributed by @marcin-nowak-scl.

4. DynamoDB → Kinesis streaming destination

Four new operations on boto3.client("dynamodb"):

Item mutations from PutItem / UpdateItem / DeleteItem / TransactWriteItems / BatchWriteItem fan out to every ACTIVE destination as JSON-encoded records (via kinesis.put_record_internal) for Kinesis / Lambda ESM / Firehose-style consumers. DISABLED destinations remain on Describe for the ~24h AWS window; DeleteTable drops destinations.

The Kinesis fan-out is decoupled from StreamSpecification.StreamEnabled — a table can have a Kinesis destination without a DynamoDB Stream, and vice versa. Status transitions match AWS: Enable returns ENABLING (storage ACTIVE), Disable returns DISABLING (storage DISABLED), Update returns UPDATING (storage ACTIVE). The wire envelope reuses the DynamoDB Streams record shape — AWS does not publicly document the exact Kinesis envelope it produces, so MiniStack approximates it with the Streams record. Contributed by @marcin-nowak-scl.

5. Wire-format compliance — four small bugs the SDKs notice

Upgrade

# Regular image (Alpine)
docker pull ministackorg/ministack:1.3.20

# Full image (Debian + DuckDB + psycopg2 + pymysql)
docker pull ministackorg/ministack:1.3.20-full

# pip
pip install -U ministack

Full changelog: CHANGELOG.md.

Shipped by the MiniStack community. Contributions credited throughout. GitHub · r/ministack