AWS cloud emulator
simfra
A single-container AWS simulator. All services on one port, real cross-service interactions, optional persistence to SQLite.
No AWS account required.
Origin
The AWS emulator I relied on started moving features behind a paywall, and even then it didn't offer the depth of simulation I needed for another project. Developing against real AWS wasn't an option.
What started as a weekend experiment quickly got out of hand. A few services turned into 88, and here we are.
How it works
Simfra isn't a collection of mocks. Services maintain real state, enforce real policies, and interact with each other the same way they do in AWS.
Cross-service delivery
SNS delivers to SQS. EventBridge routes to Lambda. CloudWatch alarms trigger SNS notifications. Services call each other the same way they do in AWS.
IAM policy enforcement
Identity policies, resource policies, permission boundaries, SCPs, and session policies are evaluated on every API call. iam:PassRole is checked. Service-linked roles are auto-created.
Real cryptography
KMS generates AES-256, RSA, ECDSA, and HMAC keys. Envelope encryption with data key caching. SQS, SNS, S3, DynamoDB, Kinesis, and CloudWatch Logs use it for server-side encryption.
Docker-backed compute
Lambda functions run in containers. EC2 instances backed by Docker. RDS runs real MySQL/PostgreSQL. EKS uses kind for real Kubernetes clusters. ElastiCache runs actual Redis.
Terraform-native
Set AWS_ENDPOINT_URL=http://localhost:4599 and run terraform apply. No skip flags, no special provider configuration, no endpoint blocks.
Web console
Built-in management console for browsing and managing resources. Multi-account, multi-region. Open localhost:4599 in a browser.
Get running in seconds
Infrastructure as code testing
API-only mode. Validate Terraform plans and test infrastructure modules without provisioning real resources.
Application development
Docker-backed services with persistence. Lambda runs your code, RDS runs real databases, EKS creates real Kubernetes clusters.
Cross-service integrations
These execute at runtime. When SNS delivers a message to SQS, the message actually appears in the queue.
Get in touch
Questions or feedback?
Whether you're evaluating Simfra for your team or want to report an issue, we'd love to hear from you.