kumo: A lightweight AWS service emulator in Go

kumo: A lightweight AWS service emulator in Go
kumo is a new little tool similar to localstack that provides a lightweight AWS service emulator in Go. It is designed to be simple and easy to use, with a focus on providing a minimal set of features that are commonly used in development and testing.
The feature set includes:
- No authentication required - Perfect for CI environments
- Single binary - Easy to distribute and deploy
- Docker support - Run as a container
- Lightweight - Fast startup, minimal resource usage
- AWS SDK v2 compatible - Works seamlessly with Go AWS SDK v2
- Optional data persistence - Survive restarts with KUMO_DATA_DIR
It currently supports 71 AWS services.
Starting kumo
Firing up kumo is as simple as running the following command:
go run github.com/sivchari/kumo/cmd/kumo@latest
Playing with SQS queues
Now let’s see how to play with kumo-simulated SQS queues using the AWS CLI.
# Create a queue
aws sqs --endpoint-url http://localhost:4566 create-queue --queue-name test
{
"QueueUrl": "http://localhost:4566/000000000000/test"
}
# List queues
aws sqs --endpoint-url http://localhost:4566 list-queues
{
"QueueUrls": [
"http://localhost:4566/000000000000/test"
]
}
# Send a message
aws sqs --endpoint-url http://localhost:4566 send-message --queue-url http://localhost:4566/000000000000/test --message-body '123'
{
"MD5OfMessageBody": "202cb962ac59075b964b07152d234b70",
"MessageId": "0f9991ca-e0ef-4cea-9bc6-bbbffc913745"
}
# Receive a message
aws sqs --endpoint-url http://localhost:4566 receive-message --queue-url http://localhost:4566/000000000000/test
{
"Messages": [
{
"MessageId": "0f9991ca-e0ef-4cea-9bc6-bbbffc913745",
"ReceiptHandle": "bf3eef1a-f89e-4b1a-b74e-671d93095d6c",
"MD5OfBody": "202cb962ac59075b964b07152d234b70",
"Body": "123",
"Attributes": {
"ApproximateFirstReceiveTimestamp": "1775453411219",
"ApproximateReceiveCount": "1",
"SentTimestamp": "1775453397364"
}
}
]
}
# Delete a message
aws sqs --endpoint-url http://localhost:4566 delete-message --queue-url http://localhost:4566/000000000000/test --receipt-handle bf3eef1a-f89e-4b1a-b74e-671d93095d6c
Conclusion
kumo might be a great tool for developers who need a lightweight AWS service emulator for development and testing. It is easy to use, fast, and compatible with the AWS SDK v2. Whether you are working on a small project or a large application, kumo can help you simulate AWS services without the need for complex setups or configurations.