Quick Start
Four commands, sixty seconds. You'll have a running DynamoDB endpoint with data in it.
1. Start Dynoxide
dynoxide
That's it. It's listening on http://localhost:8000 with an in-memory database.
2. Create a table
aws dynamodb create-table \
--table-name users \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--billing-mode PAY_PER_REQUEST \
--endpoint-url http://localhost:8000
3. Write an item
aws dynamodb put-item \
--table-name users \
--item '{"id":{"S":"1"},"name":{"S":"Ada"},"role":{"S":"engineer"}}' \
--endpoint-url http://localhost:8000
4. Read it back
aws dynamodb get-item \
--table-name users \
--key '{"id":{"S":"1"}}' \
--endpoint-url http://localhost:8000
You'll get back:
{
"Item": {
"id": { "S": "1" },
"name": { "S": "Ada" },
"role": { "S": "engineer" }
}
}
Using it with SDKs
Any DynamoDB SDK works. Just point the endpoint to http://localhost:8000. Here's Python with boto3:
import boto3
dynamodb = boto3.resource(
'dynamodb',
endpoint_url='http://localhost:8000',
region_name='us-east-1',
aws_access_key_id='anything',
aws_secret_access_key='anything'
)
table = dynamodb.Table('users')
table.put_item(Item={'id': '2', 'name': 'Grace'})
The access key and secret can be any non-empty string - Dynoxide doesn't check credentials.
Persistent storage
By default, data lives in memory and disappears when you stop the process. To persist it:
dynoxide --db-path data.db
Now your tables and items survive restarts. The file is a standard SQLite database.