{"id":50999616,"url":"https://github.com/appwiz/amazon-inmemory-services","last_synced_at":"2026-06-20T13:03:32.097Z","repository":{"id":337265715,"uuid":"1152907167","full_name":"appwiz/amazon-inmemory-services","owner":"appwiz","description":"An in-memory implementation of various AWS services.","archived":false,"fork":false,"pushed_at":"2026-02-28T08:10:56.000Z","size":995,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-28T11:40:17.329Z","etag":null,"topics":["aws","dynamodb","firehose","lambda","memorydb","rustlang","s3","sns","sqs"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appwiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-08T16:10:13.000Z","updated_at":"2026-02-28T08:11:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/appwiz/amazon-inmemory-services","commit_stats":null,"previous_names":["appwiz/amazon-sqs-local","appwiz/amazon-inmemory-services"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/appwiz/amazon-inmemory-services","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwiz%2Famazon-inmemory-services","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwiz%2Famazon-inmemory-services/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwiz%2Famazon-inmemory-services/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwiz%2Famazon-inmemory-services/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appwiz","download_url":"https://codeload.github.com/appwiz/amazon-inmemory-services/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwiz%2Famazon-inmemory-services/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34570539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","dynamodb","firehose","lambda","memorydb","rustlang","s3","sns","sqs"],"created_at":"2026-06-20T13:03:28.597Z","updated_at":"2026-06-20T13:03:32.091Z","avatar_url":"https://github.com/appwiz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aws-inmemory-services\n\nIn-memory implementations of 159 AWS services written in Rust. All services run as a single binary on separate ports, are compatible with the AWS CLI and SDKs, and require no external dependencies. All state is held in memory — there is no disk persistence. Restarting the server clears all data.\n\n## Getting Started\n\n### Prerequisites\n\n- [Rust](https://rustup.rs/) (1.70+)\n- [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (for integration tests)\n\n### Build\n\n```bash\ncargo build --release\n```\n\n### Run\n\n```bash\n./target/release/aws-inmemory-services\n```\n\nAll 159 services start on their default ports. Override any port with `--\u003cservice\u003e-port \u003cPORT\u003e`, and set region/account with `--region` and `--account-id`:\n\n```bash\n./target/release/aws-inmemory-services --region eu-west-1 --account-id 123456789012\n```\n\n### Connecting with the AWS CLI\n\nPoint the AWS CLI at any service using `--endpoint-url` and skip authentication:\n\n```bash\naws s3api create-bucket \\\n  --bucket my-bucket \\\n  --endpoint-url http://localhost:9000 \\\n  --no-sign-request\n\naws dynamodb create-table \\\n  --table-name MyTable \\\n  --attribute-definitions AttributeName=pk,AttributeType=S \\\n  --key-schema AttributeName=pk,KeyType=HASH \\\n  --billing-mode PAY_PER_REQUEST \\\n  --endpoint-url http://localhost:8000 \\\n  --no-sign-request\n```\n\n### Connecting with AWS SDKs\n\n```javascript\nimport { S3Client, PutObjectCommand } from \"@aws-sdk/client-s3\";\n\nconst client = new S3Client({\n  endpoint: \"http://localhost:9000\",\n  region: \"us-east-1\",\n  credentials: { accessKeyId: \"test\", secretAccessKey: \"test\" },\n  forcePathStyle: true,\n});\n\nawait client.send(new PutObjectCommand({\n  Bucket: \"my-bucket\",\n  Key: \"hello.txt\",\n  Body: \"Hello, world!\",\n}));\n```\n\n## Services (159)\n\nAll services are organized by category. Click the category link for detailed documentation including supported operations, CLI examples, SDK examples, and wire protocol details.\n\n### Compute (13 services) — [Full Documentation](docs/compute.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| EC2 | `10001` | 9 |\n| ECS | `10003` | 12 |\n| EKS | `10004` | 4 |\n| ECR | `10002` | 4 |\n| Lambda | `9001` | 22 |\n| Batch | `10007` | 8 |\n| Lightsail | `10005` | 4 |\n| Outposts | `10009` | 4 |\n| Auto Scaling | `10011` | 3 |\n| Elastic Beanstalk | `10008` | 3 |\n| App Runner | `10006` | 4 |\n| EC2 Image Builder | `10010` | 4 |\n| GameLift | `10156` | 4 |\n\n### Storage (5 services) — [Full Documentation](docs/storage.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| S3 | `9000` | 26 |\n| EFS | `9600` | 15 |\n| FSx | `10147` | 4 |\n| Backup | `10146` | 8 |\n| Storage Gateway | `10148` | 4 |\n\n### Databases (9 services) — [Full Documentation](docs/databases.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| DynamoDB | `8000` | 16 |\n| RDS | `10012` | 6 |\n| ElastiCache | `10014` | 3 |\n| Neptune | `10016` | 3 |\n| DocumentDB | `10013` | 3 |\n| Timestream | `10017` | 8 |\n| Keyspaces | `10015` | 8 |\n| MemoryDB | `6379` | 21 |\n| Redshift | `10060` | 3 |\n\n### Networking \u0026 Content Delivery (10 services) — [Full Documentation](docs/networking.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| API Gateway | `4567` | 30 |\n| CloudFront | `10021` | 4 |\n| Route 53 | `10022` | 4 |\n| ELB | `10027` | 6 |\n| VPC Lattice | `10023` | 4 |\n| Direct Connect | `10025` | 4 |\n| Global Accelerator | `10026` | 4 |\n| Cloud Map | `10024` | 4 |\n| Network Firewall | `10048` | 8 |\n| App Mesh | `10158` | 4 |\n\n### Security, Identity \u0026 Compliance (19 services) — [Full Documentation](docs/security.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| IAM | `10033` | 9 |\n| Cognito | `9229` | 33 |\n| KMS | `7600` | 22 |\n| Secrets Manager | `7700` | 11 |\n| WAF | `10035` | 8 |\n| Shield | `10036` | 4 |\n| GuardDuty | `10037` | 4 |\n| ACM | `10034` | 4 |\n| Macie | `10039` | 4 |\n| Inspector | `10038` | 4 |\n| Security Hub | `10046` | 4 |\n| Security Lake | `10041` | 4 |\n| Verified Permissions | `10042` | 4 |\n| CloudHSM | `10044` | 4 |\n| RAM | `10045` | 4 |\n| Directory Service | `10043` | 4 |\n| IAM Identity Center | `10049` | 4 |\n| Firewall Manager | `10047` | 4 |\n| Detective | `10040` | 4 |\n\n### Management \u0026 Governance (16 services) — [Full Documentation](docs/management.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| CloudFormation | `10070` | 3 |\n| CloudWatch | `10067` | 3 |\n| CloudTrail | `10071` | 4 |\n| CloudWatch Logs | `9201` | 17 |\n| Organizations | `10076` | 8 |\n| Config | `9500` | 19 |\n| SSM Parameter Store | `9100` | 10 |\n| Trusted Advisor | `10078` | 4 |\n| Health | `10074` | 4 |\n| Control Tower | `10073` | 4 |\n| Compute Optimizer | `10072` | 4 |\n| License Manager | `10075` | 4 |\n| Proton | `10077` | 4 |\n| Managed Grafana | `10068` | 4 |\n| Managed Prometheus | `10069` | 4 |\n| X-Ray | `10089` | 4 |\n\n### Developer Tools (7 services) — [Full Documentation](docs/developer-tools.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| CodeBuild | `10084` | 4 |\n| CodePipeline | `10087` | 4 |\n| CodeCommit | `10085` | 4 |\n| CodeDeploy | `10086` | 4 |\n| CodeArtifact | `10083` | 8 |\n| CodeCatalyst | `10082` | 4 |\n| FIS | `10088` | 4 |\n\n### Analytics (18 services) — [Full Documentation](docs/analytics.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| Athena | `10050` | 4 |\n| Glue | `10065` | 12 |\n| EMR | `10053` | 4 |\n| OpenSearch | `10058` | 4 |\n| Kinesis | `4568` | 15 |\n| Firehose | `4573` | 10 |\n| QuickSight | `10059` | 4 |\n| CloudSearch | `10051` | 3 |\n| MSK | `10057` | 4 |\n| Kinesis Video Streams | `10055` | 4 |\n| Managed Flink | `10056` | 4 |\n| DataZone | `10052` | 4 |\n| FinSpace | `10054` | 4 |\n| Lake Formation | `10066` | 4 |\n| Data Exchange | `10062` | 4 |\n| Data Pipeline | `10063` | 4 |\n| Entity Resolution | `10064` | 4 |\n| Clean Rooms | `10061` | 4 |\n\n### Machine Learning \u0026 AI (14 services) — [Full Documentation](docs/ml-ai.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| SageMaker | `10102` | 4 |\n| Bedrock | `10093` | 4 |\n| Comprehend | `10094` | 4 |\n| Rekognition | `10101` | 4 |\n| Textract | `10103` | 4 |\n| Transcribe | `10104` | 4 |\n| Translate | `10105` | 4 |\n| Polly | `10100` | 4 |\n| Lex | `10098` | 4 |\n| Kendra | `10097` | 4 |\n| Personalize | `10099` | 4 |\n| Forecast | `10095` | 4 |\n| Fraud Detector | `10096` | 4 |\n| HealthLake | `10107` | 4 |\n\n### IoT (6 services) — [Full Documentation](docs/iot.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| IoT Core | `10117` | 4 |\n| IoT Events | `10118` | 4 |\n| IoT SiteWise | `10121` | 4 |\n| IoT TwinMaker | `10122` | 4 |\n| IoT Greengrass | `10120` | 4 |\n| IoT FleetWise | `10119` | 4 |\n\n### Application Integration (9 services) — [Full Documentation](docs/application-integration.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| SNS | `9911` | 17 |\n| SQS | `9324` | 23 |\n| EventBridge | `9195` | 15 |\n| AppSync | `9700` | 19 |\n| Step Functions | `8083` | 15 |\n| SWF | `10115` | 4 |\n| MQ | `10113` | 4 |\n| MWAA | `10114` | 4 |\n| Service Catalog | `9400` | 16 |\n\n### Business Applications (7 services) — [Full Documentation](docs/business.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| Connect | `10124` | 4 |\n| Chime | `10123` | 4 |\n| WorkDocs | `10126` | 4 |\n| WorkMail | `10127` | 4 |\n| WorkSpaces | `10152` | 4 |\n| Pinpoint | `10125` | 4 |\n| SES | `9300` | 5 |\n\n### Media Services (6 services) — [Full Documentation](docs/media.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| MediaConvert | `10134` | 4 |\n| MediaLive | `10135` | 4 |\n| MediaPackage | `10136` | 4 |\n| MediaStore | `10137` | 4 |\n| IVS | `10133` | 4 |\n| Elastic Transcoder | `10132` | 4 |\n\n### Migration \u0026 Transfer (6 services) — [Full Documentation](docs/migration.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| DMS | `10018` | 4 |\n| DataSync | `10138` | 4 |\n| Transfer Family | `10141` | 4 |\n| Migration Hub | `10140` | 4 |\n| Mainframe Modernization | `10139` | 4 |\n| DRS | `10149` | 4 |\n\n### Cost Management (3 services) — [Full Documentation](docs/cost-management.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| Cost Explorer | `10131` | 4 |\n| Budgets | `10130` | 4 |\n| Billing Conductor | `10129` | 4 |\n\n### Other Services (11 services) — [Full Documentation](docs/other.md)\n\n| Service | Port | Operations |\n|---------|------|------------|\n| Amplify | `10154` | 4 |\n| AppFlow | `10112` | 4 |\n| AppFabric | `10128` | 4 |\n| B2BI | `10116` | 4 |\n| Braket | `10150` | 4 |\n| Q Business | `10108` | 4 |\n| DevOps Guru | `10106` | 4 |\n| Device Farm | `10155` | 4 |\n| Ground Station | `10151` | 4 |\n| Location Service | `10153` | 4 |\n| Managed Blockchain | `10157` | 4 |\n\n## Running Tests\n\n### Unit Tests\n\n```bash\ncargo test\n```\n\n### Integration Tests\n\nIntegration tests use the AWS CLI to exercise all API operations. Each script builds the binary, starts the server on isolated ports, runs all test cases, and reports pass/fail counts.\n\n```bash\n# Run individual service tests\nbash tests/s3_integration.sh\nbash tests/dynamodb_integration.sh\nbash tests/lambda_integration.sh\nbash tests/sns_integration.sh\nbash tests/sqs_integration.sh\n\n# Run all integration tests\nfor f in tests/*_integration.sh; do bash \"$f\"; done\n```\n\nSee the [tests/](tests/) directory for the full list of 159 integration test scripts.\n\n## Differences from AWS\n\nThis is a local development tool, not a production replacement. Key differences:\n\n- **In-memory only** — all state is lost when the server stops. No disk persistence or replication.\n- **No authentication** — all requests are accepted without signature verification. Use `--no-sign-request`.\n- **No TLS** — the server speaks plain HTTP only.\n- **Single-process** — no distributed behavior.\n- **S3 versioning** — versioning status can be toggled but version history is not maintained. Only the latest version of each object is stored.\n- **SNS subscriptions auto-confirm** — all subscriptions are immediately confirmed without requiring endpoint verification.\n- **SNS message delivery** — messages are accepted and assigned IDs but not actually delivered to endpoints.\n- **SQS permissions stored but not enforced** — `AddPermission` / `RemovePermission` update the queue's policy, but no access checks are performed.\n- **DynamoDB expressions** — basic `KeyConditionExpression`, `UpdateExpression` (SET, REMOVE), `FilterExpression`, and `ProjectionExpression` are supported. Transactions, GSIs/LSIs, and streams are not implemented.\n- **Lambda invocation** — `Invoke` returns a stub 200 response. Functions are not actually executed.\n- **Firehose delivery** — records are accepted and stored in memory but not delivered to any destination.\n- **MemoryDB clusters** — clusters are created with simulated metadata but no actual Redis instances are started.\n- **Cognito authentication** — auth flows return stub token responses. No actual JWT signing or token validation is performed.\n- **API Gateway invocations** — the service manages REST API configuration but does not route or proxy actual HTTP requests.\n- **KMS cryptography is simulated** — Encrypt/Decrypt, Sign/Verify produce deterministic fake outputs. No actual cryptographic operations are performed.\n- **Secrets Manager deletion is immediate** — `DeleteSecret` with `--force-delete-without-recovery` removes the secret immediately.\n- **EventBridge rules do not evaluate events** — `PutEvents` accepts events but does not match them against rules or invoke targets.\n- **Step Functions executions do not run** — `StartExecution` creates an execution in RUNNING state but does not evaluate the state machine definition.\n- **SSM SecureString values are stored in plaintext** — no KMS encryption is performed.\n- **CloudWatch Logs FilterLogEvents uses substring matching** — not CloudWatch Logs filter syntax.\n- **SES emails are not delivered** — `SendEmail` accepts the request but does not deliver email. All identities are auto-verified.\n- **Service Catalog provisioning is simulated** — `ProvisionProduct` creates a record but does not deploy CloudFormation stacks.\n- **Config recording is simulated** — recorder toggling is tracked but resources are not actually monitored.\n- **EFS file systems are immediately available** — no provisioning delay. Mount targets are simulated.\n- **AppSync GraphQL APIs are simulated** — APIs are created with synthetic URIs but no actual GraphQL endpoint is running.\n- **No CloudWatch metrics** — no metrics integration.\n- **Encryption attributes are accepted but not applied** — KMS-related attributes are stored but data is not encrypted.\n\n## CLI Options\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--region` | `us-east-1` | AWS region used in ARNs |\n| `--account-id` | `000000000000` | AWS account ID used in ARNs |\n| `--\u003cservice\u003e-port` | *(see tables above)* | Port for the specified service |\n\nEvery service has a `--\u003cservice\u003e-port` flag. See the service tables above for default port assignments.\n\n## License\n\nThis project is for local development and testing purposes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappwiz%2Famazon-inmemory-services","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappwiz%2Famazon-inmemory-services","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappwiz%2Famazon-inmemory-services/lists"}