Versão em Português

Kumo Gopher

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.

References

kumo