aws-kinesis-local serves the Amazon Kinesis Data Streams API on your machine, for development and CI. It implements all 45 Kinesis operations, including enhanced fan-out, and serves JSON and CBOR over HTTP/1.1 and HTTP/2 on the same port, so the AWS CLI and the AWS SDKs work with their default settings. It ships as an npm package, a Docker image and a Helm chart.
With Node.js:
npx @saidsef/aws-kinesis-local --port 4567With Docker:
docker run -d -p 4567:4567 docker.io/saidsef/aws-kinesis-local:latestThen point any AWS client at it:
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_REGION=eu-west-1
aws --endpoint-url http://localhost:4567 kinesis list-streamsStart a server inside a test suite, on a free port, and stop it afterwards:
import { start } from '@saidsef/aws-kinesis-local'
const kinesis = await start({ port: 0 })
console.log(kinesis.endpoint)
await kinesis.close()helm repo add kinesis https://saidsef.github.io/aws-kinesis-local/
helm upgrade --install kinesis kinesis/kinesis --namespace kinesis --create-namespaceaws-kinesis-local checks every request against the Smithy model that AWS publishes for Kinesis. It covers streams, records, shards, UpdateShardCount, retention, tags, on-demand capacity, warm throughput, record distribution, enhanced fan-out, encryption, enhanced monitoring, account settings, resource policies and channels. Supported operations lists every operation and how aws-kinesis-local differs from AWS.
Read the Docs publishes the pages under docs/ with MkDocs Material at aws-kinesis-local.readthedocs.io.
| Page | Contents |
|---|---|
| Configuration | Environment variables, flags and data storage |
| Clients | Endpoints, credentials, the Node.js API, and AWS CLI and SDK examples |
| Kubernetes | Helm, Kustomize and Argo CD installs |
| Supported operations | Implemented operations, differences from AWS and KCL setup |
| Development | Builds, tests, CI workflows, releases and image tags |
| Specifications | Architecture, request validation, storage, enhanced fan-out and testing |
| Chart values | Every Helm value, generated by helm-docs |
Read the contribution guide, then open a pull request.