Winterbäume (stylised as Winterbaume) is a stateful AWS service emulator for integration testing. Real API behaviour. Embed in tests or run standalone.
Inspired by Python's moto.
| Service | Crate | Protocol | Operations | moto | floci | kumo |
|---|---|---|---|---|---|---|
| Account | winterbaume-account |
REST-JSON | 15/15 (100.0%) | 3/15 (20.0%) | 0/15 (0.0%) | 0/15 (0.0%) |
| ACM | winterbaume-acm |
awsJson1.1 | 16/16 (100.0%) | 11/16 (68.8%) | 0/16 (0.0%) | 6/16 (37.5%) |
| ACM PCA | winterbaume-acmpca |
awsJson1.1 | 23/23 (100.0%) | 17/23 (73.9%) | 0/23 (0.0%) | 0/23 (0.0%) |
| AMP/Prometheus | winterbaume-amp |
REST-JSON | 17/44 (38.6%) | 17/44 (38.6%) | 0/44 (0.0%) | 0/44 (0.0%) |
| amplify | winterbaume-amplify |
? | 23/37 (62.2%) | 0/37 (0.0%) | 0/37 (0.0%) | 9/37 (24.3%) |
| API Gateway | winterbaume-apigateway |
REST-JSON | 119/124 (96.0%) | 77/124 (62.1%) | 62/124 (50.0%) | 16/124 (12.9%) |
| API Gateway Management API | winterbaume-apigatewaymanagement |
REST-JSON | 3/3 (100.0%) | 3/3 (100.0%) | 0/3 (0.0%) | 0/3 (0.0%) |
| API Gateway V2 | winterbaume-apigatewayv2 |
REST-JSON | 62/103 (60.2%) | 54/103 (52.4%) | 0/103 (0.0%) | 0/103 (0.0%) |
| App Mesh | winterbaume-appmesh |
REST-JSON | 38/38 (100.0%) | 0/38 (0.0%) | 0/38 (0.0%) | 25/38 (65.8%) |
| AppConfig | winterbaume-appconfig |
REST-JSON | 45/45 (100.0%) | 15/45 (33.3%) | 0/45 (0.0%) | 0/45 (0.0%) |
| Application Auto Scaling | winterbaume-applicationautoscaling |
awsJson1.1 | 14/14 (100.0%) | 9/14 (64.3%) | 0/14 (0.0%) | 0/14 (0.0%) |
| apprunner | winterbaume-apprunner |
? | 23/37 (62.2%) | 0/37 (0.0%) | 0/37 (0.0%) | 0/37 (0.0%) |
| AppSync | winterbaume-appsync |
REST-JSON | 27/74 (36.5%) | 27/74 (36.5%) | 0/74 (0.0%) | 3/74 (4.1%) |
| Athena | winterbaume-athena |
awsJson1.1 | 23/70 (32.9%) | 23/70 (32.9%) | 0/70 (0.0%) | 7/70 (10.0%) |
| auditmanager | winterbaume-auditmanager |
? | 15/62 (24.2%) | 0/62 (0.0%) | 0/62 (0.0%) | 0/62 (0.0%) |
| Aurora DSQL | winterbaume-dsql |
REST-JSON | 12/12 (100.0%) | 5/12 (41.7%) | 0/12 (0.0%) | 0/12 (0.0%) |
| Auto Scaling | winterbaume-autoscaling |
awsQuery | 52/66 (78.8%) | 39/66 (59.1%) | 0/66 (0.0%) | 0/66 (0.0%) |
| Backup | winterbaume-backup |
REST-JSON | 58/108 (53.7%) | 17/108 (15.7%) | 0/108 (0.0%) | 12/108 (11.1%) |
| Batch | winterbaume-batch |
REST-JSON | 39/39 (100.0%) | 24/39 (61.5%) | 0/39 (0.0%) | 10/39 (25.6%) |
| Bedrock | winterbaume-bedrock |
REST-JSON | 48/98 (49.0%) | 13/98 (13.3%) | 0/98 (0.0%) | 0/98 (0.0%) |
| Bedrock Agent | winterbaume-bedrockagent |
REST-JSON | 72/72 (100.0%) | 11/72 (15.3%) | 0/72 (0.0%) | 0/72 (0.0%) |
| Budgets | winterbaume-budgets |
awsJson1.1 | 7/26 (26.9%) | 7/26 (26.9%) | 0/26 (0.0%) | 0/26 (0.0%) |
| chatbot | winterbaume-chatbot |
? | 15/34 (44.1%) | 0/34 (0.0%) | 0/34 (0.0%) | 0/34 (0.0%) |
| clouddirectory | winterbaume-clouddirectory |
? | 13/66 (19.7%) | 13/66 (19.7%) | 0/66 (0.0%) | 0/66 (0.0%) |
| CloudFormation | winterbaume-cloudformation |
awsQuery | 43/90 (47.8%) | 33/90 (36.7%) | 0/90 (0.0%) | 8/90 (8.9%) |
| CloudFront | winterbaume-cloudfront |
REST-XML | 167/167 (100.0%) | 25/167 (15.0%) | 0/167 (0.0%) | 8/167 (4.8%) |
| CloudHSM v2 | winterbaume-cloudhsmv2 |
awsJson1.1 | 18/18 (100.0%) | 0/18 (0.0%) | 0/18 (0.0%) | 0/18 (0.0%) |
| CloudTrail | winterbaume-cloudtrail |
awsJson1.1 | 23/60 (38.3%) | 16/60 (26.7%) | 0/60 (0.0%) | 8/60 (13.3%) |
| CloudWatch | winterbaume-cloudwatch |
awsQuery | 43/43 (100.0%) | 20/43 (46.5%) | 0/43 (0.0%) | 7/43 (16.3%) |
| CloudWatch Logs | winterbaume-cloudwatchlogs |
awsJson1.1 | 108/108 (100.0%) | 51/108 (47.2%) | 0/108 (0.0%) | 9/108 (8.3%) |
| codeartifact | winterbaume-codeartifact |
? | 9/48 (18.8%) | 0/48 (0.0%) | 0/48 (0.0%) | 0/48 (0.0%) |
| CodeBuild | winterbaume-codebuild |
awsJson1.1 | 28/59 (47.5%) | 9/59 (15.3%) | 0/59 (0.0%) | 0/59 (0.0%) |
| CodeCommit | winterbaume-codecommit |
awsJson1.1 | 25/79 (31.6%) | 3/79 (3.8%) | 0/79 (0.0%) | 0/79 (0.0%) |
| CodeDeploy | winterbaume-codedeploy |
awsJson1.1 | 15/47 (31.9%) | 14/47 (29.8%) | 0/47 (0.0%) | 0/47 (0.0%) |
| CodePipeline | winterbaume-codepipeline |
awsJson1.1 | 8/44 (18.2%) | 8/44 (18.2%) | 0/44 (0.0%) | 0/44 (0.0%) |
| Cognito Identity | winterbaume-cognitoidentity |
awsJson1.1 | 23/23 (100.0%) | 10/23 (43.5%) | 0/23 (0.0%) | 0/23 (0.0%) |
| Cognito Identity Provider | winterbaume-cognitoidentityprovider |
awsJson1.1 | 122/122 (100.0%) | 62/122 (50.8%) | 34/122 (27.9%) | 15/122 (12.3%) |
| Comprehend | winterbaume-comprehend |
awsJson1.1 | 65/85 (76.5%) | 63/85 (74.1%) | 0/85 (0.0%) | 12/85 (14.1%) |
| Config | winterbaume-config |
awsJson1.1 | 49/97 (50.5%) | 38/97 (39.2%) | 0/97 (0.0%) | 9/97 (9.3%) |
| Connect | winterbaume-connect |
REST-JSON | 10/367 (2.7%) | 10/367 (2.7%) | 0/367 (0.0%) | 0/367 (0.0%) |
| Connect Campaigns | winterbaume-connectcampaigns |
REST-JSON | 14/22 (63.6%) | 14/22 (63.6%) | 0/22 (0.0%) | 0/22 (0.0%) |
| Cost Explorer | winterbaume-costexplorer |
awsJson1.1 | 47/47 (100.0%) | 0/47 (0.0%) | 0/47 (0.0%) | 8/47 (17.0%) |
| Data Pipeline | winterbaume-datapipeline |
awsJson1.1 | 19/19 (100.0%) | 0/19 (0.0%) | 0/19 (0.0%) | 0/19 (0.0%) |
| Database Migration Service (DMS) | winterbaume-databasemigrationservice |
awsJson1.1 | 42/119 (35.3%) | 17/119 (14.3%) | 0/119 (0.0%) | 0/119 (0.0%) |
| DataBrew | winterbaume-databrew |
REST-JSON | 33/44 (75.0%) | 24/44 (54.5%) | 0/44 (0.0%) | 0/44 (0.0%) |
| DataSync | winterbaume-datasync |
awsJson1.1 | 8/53 (15.1%) | 6/53 (11.3%) | 0/53 (0.0%) | 0/53 (0.0%) |
| DAX | winterbaume-dax |
awsJson1.1 | 6/21 (28.6%) | 6/21 (28.6%) | 0/21 (0.0%) | 0/21 (0.0%) |
| Direct Connect | winterbaume-directconnect |
awsJson1.1 | 4/63 (6.3%) | 0/63 (0.0%) | 0/63 (0.0%) | 0/63 (0.0%) |
| Directory Service | winterbaume-directory |
awsJson1.1 | 4/80 (5.0%) | 0/80 (0.0%) | 0/80 (0.0%) | 6/80 (7.5%) |
| DynamoDB | winterbaume-dynamodb |
awsJson1.0 | 57/57 (100.0%) | 39/57 (68.4%) | 0/57 (0.0%) | 12/57 (21.1%) |
| DynamoDB Streams | winterbaume-dynamodbstreams |
awsJson1.0 | 4/4 (100.0%) | 0/4 (0.0%) | 0/4 (0.0%) | 0/4 (0.0%) |
| EBS | winterbaume-ebs |
REST-JSON | 6/6 (100.0%) | 6/6 (100.0%) | 0/6 (0.0%) | 0/6 (0.0%) |
| EC2 | winterbaume-ec2 |
awsQuery | 245/756 (32.4%) | 219/756 (29.0%) | 0/756 (0.0%) | 27/756 (3.6%) |
| EC2 Instance Connect | winterbaume-ec2instanceconnect |
awsJson1.0 | 2/2 (100.0%) | 1/2 (50.0%) | 0/2 (0.0%) | 0/2 (0.0%) |
| ECR | winterbaume-ecr |
awsJson1.1 | 58/58 (100.0%) | 29/58 (50.0%) | 0/58 (0.0%) | 8/58 (13.8%) |
| ECS | winterbaume-ecs |
awsJson1.1 | 64/64 (100.0%) | 45/64 (70.3%) | 0/64 (0.0%) | 12/64 (18.8%) |
| EFS | winterbaume-efs |
REST-JSON | 31/31 (100.0%) | 19/31 (61.3%) | 0/31 (0.0%) | 0/31 (0.0%) |
| EKS | winterbaume-eks |
REST-JSON | 59/64 (92.2%) | 17/64 (26.6%) | 0/64 (0.0%) | 8/64 (12.5%) |
| Elastic Beanstalk | winterbaume-stubs |
— | Stub (501) | — | — | — |
| ElastiCache | winterbaume-elasticache |
awsQuery | 24/75 (32.0%) | 17/75 (22.7%) | 0/75 (0.0%) | 7/75 (9.3%) |
| elasticbeanstalk | winterbaume-elasticbeanstalk |
? | 7/47 (14.9%) | 0/47 (0.0%) | 0/47 (0.0%) | 7/47 (14.9%) |
| ELB | winterbaume-elasticloadbalancing |
awsQuery | 29/29 (100.0%) | 21/29 (72.4%) | 0/29 (0.0%) | 0/29 (0.0%) |
| ELBv2 | winterbaume-elasticloadbalancingv2 |
awsQuery | 51/51 (100.0%) | 33/51 (64.7%) | 0/51 (0.0%) | 10/51 (19.6%) |
| EMR | winterbaume-emr |
awsJson1.1 | 38/60 (63.3%) | 26/60 (43.3%) | 0/60 (0.0%) | 0/60 (0.0%) |
| EMR Containers | winterbaume-emrcontainers |
REST-JSON | 23/23 (100.0%) | 8/23 (34.8%) | 0/23 (0.0%) | 0/23 (0.0%) |
| EMR Serverless | winterbaume-emrserverless |
REST-JSON | 16/16 (100.0%) | 11/16 (68.8%) | 0/16 (0.0%) | 11/16 (68.8%) |
| EventBridge | winterbaume-eventbridge |
awsJson1.1 | 57/57 (100.0%) | 45/57 (78.9%) | 0/57 (0.0%) | 12/57 (21.1%) |
| EventBridge Pipes | winterbaume-pipes |
REST-JSON | 10/10 (100.0%) | 6/10 (60.0%) | 0/10 (0.0%) | 10/10 (100.0%) |
| Firehose | winterbaume-firehose |
awsJson1.1 | 12/12 (100.0%) | 12/12 (100.0%) | 0/12 (0.0%) | 7/12 (58.3%) |
| Forecast | winterbaume-forecast |
awsJson1.1 | 5/63 (7.9%) | 5/63 (7.9%) | 0/63 (0.0%) | 17/63 (27.0%) |
| FSx | winterbaume-fsx |
awsJson1.1 | 9/48 (18.8%) | 9/48 (18.8%) | 0/48 (0.0%) | 0/48 (0.0%) |
| Glacier | winterbaume-glacier |
REST-JSON | 33/33 (100.0%) | 10/33 (30.3%) | 0/33 (0.0%) | 4/33 (12.1%) |
| Glue | winterbaume-glue |
awsJson1.1 | 132/265 (49.8%) | 96/265 (36.2%) | 0/265 (0.0%) | 11/265 (4.2%) |
| Greengrass | winterbaume-greengrass |
REST-JSON | 71/92 (77.2%) | 55/92 (59.8%) | 0/92 (0.0%) | 0/92 (0.0%) |
| GuardDuty | winterbaume-guardduty |
REST-JSON | 87/87 (100.0%) | 12/87 (13.8%) | 0/87 (0.0%) | 0/87 (0.0%) |
| IAM | winterbaume-iam |
awsQuery | 176/176 (100.0%) | 119/176 (67.6%) | 0/176 (0.0%) | 19/176 (10.8%) |
| Identity Store | winterbaume-identitystore |
awsJson1.1 | 17/19 (89.5%) | 14/19 (73.7%) | 0/19 (0.0%) | 0/19 (0.0%) |
| Inspector2 | winterbaume-inspector2 |
REST-JSON | 70/75 (93.3%) | 19/75 (25.3%) | 0/75 (0.0%) | 0/75 (0.0%) |
| IoT | winterbaume-iot |
REST-JSON | 100/272 (36.8%) | 100/272 (36.8%) | 0/272 (0.0%) | 0/272 (0.0%) |
| IoT Data Plane | winterbaume-iotdataplane |
REST-JSON | 8/8 (100.0%) | 0/8 (0.0%) | 0/8 (0.0%) | 0/8 (0.0%) |
| IVS | winterbaume-ivs |
REST-JSON | 35/35 (100.0%) | 6/35 (17.1%) | 0/35 (0.0%) | 0/35 (0.0%) |
| Kinesis | winterbaume-kinesis |
awsJson1.1 | 38/39 (97.4%) | 31/39 (79.5%) | 0/39 (0.0%) | 9/39 (23.1%) |
| Kinesis Analytics V2 | winterbaume-kinesisanalyticsv2 |
awsJson1.1 | 33/33 (100.0%) | 0/33 (0.0%) | 0/33 (0.0%) | 0/33 (0.0%) |
| Kinesis Video | winterbaume-kinesisvideo |
REST-JSON | 32/32 (100.0%) | 0/32 (0.0%) | 0/32 (0.0%) | 0/32 (0.0%) |
| Kinesis Video Archived Media | winterbaume-kinesisvideoarchivedmedia |
REST-JSON | 6/6 (100.0%) | 3/6 (50.0%) | 0/6 (0.0%) | 0/6 (0.0%) |
| KMS | winterbaume-kms |
awsJson1.1 | 53/53 (100.0%) | 40/53 (75.5%) | 0/53 (0.0%) | 12/53 (22.6%) |
| Lake Formation | winterbaume-lakeformation |
REST-JSON | 20/61 (32.8%) | 20/61 (32.8%) | 0/61 (0.0%) | 0/61 (0.0%) |
| Lambda | winterbaume-lambda |
REST-JSON | 85/85 (100.0%) | 46/85 (54.1%) | 0/85 (0.0%) | 12/85 (14.1%) |
| lexmodelsv2 | winterbaume-lexmodelsv2 |
? | 60/107 (56.1%) | 17/107 (15.9%) | 0/107 (0.0%) | 0/107 (0.0%) |
| Macie2 | winterbaume-macie2 |
REST-JSON | 81/81 (100.0%) | 13/81 (16.0%) | 0/81 (0.0%) | 24/81 (29.6%) |
| Managed Blockchain | winterbaume-managedblockchain |
REST-JSON | 27/27 (100.0%) | 20/27 (74.1%) | 0/27 (0.0%) | 0/27 (0.0%) |
| Marketplace Metering | winterbaume-marketplacemetering |
awsJson1.1 | 4/4 (100.0%) | 0/4 (0.0%) | 0/4 (0.0%) | 0/4 (0.0%) |
| MediaConnect | winterbaume-mediaconnect |
REST-JSON | 21/82 (25.6%) | 18/82 (22.0%) | 0/82 (0.0%) | 0/82 (0.0%) |
| MediaLive | winterbaume-medialive |
REST-JSON | 13/123 (10.6%) | 12/123 (9.8%) | 0/123 (0.0%) | 0/123 (0.0%) |
| MediaPackage | winterbaume-mediapackage |
REST-JSON | 9/19 (47.4%) | 9/19 (47.4%) | 0/19 (0.0%) | 0/19 (0.0%) |
| MediaPackage v2 | winterbaume-mediapackagev2 |
REST-JSON | 7/30 (23.3%) | 7/30 (23.3%) | 0/30 (0.0%) | 0/30 (0.0%) |
| MediaStore | winterbaume-mediastore |
awsJson1.1 | 11/21 (52.4%) | 11/21 (52.4%) | 0/21 (0.0%) | 0/21 (0.0%) |
| MediaStore Data | winterbaume-mediastoredata |
REST-JSON | 5/5 (100.0%) | 4/5 (80.0%) | 0/5 (0.0%) | 0/5 (0.0%) |
| MemoryDB | winterbaume-memorydb |
awsJson1.1 | 13/45 (28.9%) | 13/45 (28.9%) | 0/45 (0.0%) | 10/45 (22.2%) |
| MQ | winterbaume-mq |
REST-JSON | 24/24 (100.0%) | 19/24 (79.2%) | 0/24 (0.0%) | 6/24 (25.0%) |
| MSK | winterbaume-kafka |
REST-JSON | 10/59 (16.9%) | 10/59 (16.9%) | 0/59 (0.0%) | 6/59 (10.2%) |
| Neptune | winterbaume-neptune |
awsQuery | 70/70 (100.0%) | 46/70 (65.7%) | 0/70 (0.0%) | 6/70 (8.6%) |
| Network Firewall | winterbaume-networkfirewall |
awsJson1.0 | 79/79 (100.0%) | 5/79 (6.3%) | 0/79 (0.0%) | 0/79 (0.0%) |
| Network Manager | winterbaume-networkmanager |
REST-JSON | 56/95 (58.9%) | 18/95 (18.9%) | 0/95 (0.0%) | 0/95 (0.0%) |
| OpenSearch | winterbaume-opensearch |
REST-JSON | 44/82 (53.7%) | 11/82 (13.4%) | 0/82 (0.0%) | 0/82 (0.0%) |
| OpenSearch Ingestion | winterbaume-osis |
REST-JSON | 10/22 (45.5%) | 10/22 (45.5%) | 0/22 (0.0%) | 0/22 (0.0%) |
| opensearchserverless | winterbaume-opensearchserverless |
? | 12/46 (26.1%) | 12/46 (26.1%) | 0/46 (0.0%) | 0/46 (0.0%) |
| Organizations | winterbaume-organizations |
awsJson1.1 | 63/63 (100.0%) | 41/63 (65.1%) | 0/63 (0.0%) | 11/63 (17.5%) |
| panorama | winterbaume-panorama |
? | 11/34 (32.4%) | 11/34 (32.4%) | 0/34 (0.0%) | 0/34 (0.0%) |
| Panorama | winterbaume-stubs |
— | Stub (501) | — | — | — |
| Personalize | winterbaume-personalize |
awsJson1.1 | 8/71 (11.3%) | 4/71 (5.6%) | 0/71 (0.0%) | 0/71 (0.0%) |
| Pinpoint | winterbaume-pinpoint |
REST-JSON | 12/122 (9.8%) | 12/122 (9.8%) | 0/122 (0.0%) | 0/122 (0.0%) |
| Polly | winterbaume-polly |
REST-JSON | 9/9 (100.0%) | 5/9 (55.6%) | 0/9 (0.0%) | 0/9 (0.0%) |
| QuickSight | winterbaume-quicksight |
REST-JSON | 66/230 (28.7%) | 31/230 (13.5%) | 0/230 (0.0%) | 0/230 (0.0%) |
| RAM | winterbaume-ram |
REST-JSON | 35/35 (100.0%) | 8/35 (22.9%) | 0/35 (0.0%) | 0/35 (0.0%) |
| RDS | winterbaume-rds |
awsQuery | 150/163 (92.0%) | 84/163 (51.5%) | 0/163 (0.0%) | 12/163 (7.4%) |
| RDS Data | winterbaume-rdsdata |
REST-JSON | 6/6 (100.0%) | 1/6 (16.7%) | 0/6 (0.0%) | 0/6 (0.0%) |
| Redshift | winterbaume-redshift |
awsQuery | 103/141 (73.0%) | 35/141 (24.8%) | 0/141 (0.0%) | 0/141 (0.0%) |
| Redshift Data | winterbaume-redshiftdata |
awsJson1.1 | 11/11 (100.0%) | 4/11 (36.4%) | 0/11 (0.0%) | 0/11 (0.0%) |
| Rekognition | winterbaume-rekognition |
awsJson1.1 | 12/75 (16.0%) | 8/75 (10.7%) | 0/75 (0.0%) | 13/75 (17.3%) |
| Resilience Hub | winterbaume-resiliencehub |
REST-JSON | 22/63 (34.9%) | 17/63 (27.0%) | 0/63 (0.0%) | 17/63 (27.0%) |
| Resource Groups | winterbaume-resourcegroups |
REST-JSON | 23/23 (100.0%) | 15/23 (65.2%) | 0/23 (0.0%) | 0/23 (0.0%) |
| Resource Groups Tagging | winterbaume-resourcegroupstagging |
awsJson1.1 | 5/9 (55.6%) | 0/9 (0.0%) | 0/9 (0.0%) | 0/9 (0.0%) |
| Route 53 | winterbaume-route53 |
REST-XML | 71/71 (100.0%) | 30/71 (42.3%) | 0/71 (0.0%) | 6/71 (8.5%) |
| Route 53 Domains | winterbaume-route53domains |
awsJson1.1 | 5/34 (14.7%) | 0/34 (0.0%) | 0/34 (0.0%) | 0/34 (0.0%) |
| Route 53 Resolver | winterbaume-route53resolver |
awsJson1.1 | 28/68 (41.2%) | 28/68 (41.2%) | 0/68 (0.0%) | 11/68 (16.2%) |
| S3 | winterbaume-s3 |
REST-XML | 107/107 (100.0%) | 73/107 (68.2%) | 51/107 (47.7%) | 19/107 (17.8%) |
| S3 Control | winterbaume-s3control |
REST-JSON | 82/97 (84.5%) | 0/97 (0.0%) | 0/97 (0.0%) | 7/97 (7.2%) |
| S3 Tables | winterbaume-s3tables |
REST-JSON | 49/49 (100.0%) | 14/49 (28.6%) | 0/49 (0.0%) | 12/49 (24.5%) |
| S3 Vectors | winterbaume-s3vectors |
REST-JSON | 19/19 (100.0%) | 15/19 (78.9%) | 0/19 (0.0%) | 0/19 (0.0%) |
| SageMaker | winterbaume-sagemaker |
awsJson1.1 | 142/381 (37.3%) | 112/381 (29.4%) | 0/381 (0.0%) | 11/381 (2.9%) |
| SageMaker Metrics | winterbaume-sagemakermetrics |
REST-JSON | 2/2 (100.0%) | 1/2 (50.0%) | 0/2 (0.0%) | 0/2 (0.0%) |
| SageMaker Runtime | winterbaume-sagemakerruntime |
REST-JSON | 3/3 (100.0%) | 2/3 (66.7%) | 0/3 (0.0%) | 0/3 (0.0%) |
| Scheduler | winterbaume-scheduler |
REST-JSON | 12/12 (100.0%) | 12/12 (100.0%) | 0/12 (0.0%) | 9/12 (75.0%) |
| Secrets Manager | winterbaume-secretsmanager |
awsJson1.1 | 23/23 (100.0%) | 21/23 (91.3%) | 0/23 (0.0%) | 8/23 (34.8%) |
| Security Hub | winterbaume-securityhub |
REST-JSON | 107/107 (100.0%) | 13/107 (12.1%) | 0/107 (0.0%) | 0/107 (0.0%) |
| Service Catalog | winterbaume-servicecatalog |
awsJson1.1 | 4/90 (4.4%) | 0/90 (0.0%) | 0/90 (0.0%) | 0/90 (0.0%) |
| Service Catalog AppRegistry | winterbaume-servicecatalogappregistry |
REST-JSON | 24/24 (100.0%) | 0/24 (0.0%) | 0/24 (0.0%) | 0/24 (0.0%) |
| Service Discovery | winterbaume-servicediscovery |
awsJson1.1 | 27/30 (90.0%) | 27/30 (90.0%) | 0/30 (0.0%) | 0/30 (0.0%) |
| Service Quotas | winterbaume-servicequotas |
awsJson1.1 | 5/26 (19.2%) | 2/26 (7.7%) | 0/26 (0.0%) | 8/26 (30.8%) |
| SES v1 | winterbaume-ses |
awsQuery | 40/71 (56.3%) | 38/71 (53.5%) | 0/71 (0.0%) | 0/71 (0.0%) |
| SES v2 | winterbaume-sesv2 |
REST-JSON | 110/110 (100.0%) | 28/110 (25.5%) | 0/110 (0.0%) | 9/110 (8.2%) |
| Shield | winterbaume-shield |
awsJson1.1 | 9/36 (25.0%) | 9/36 (25.0%) | 0/36 (0.0%) | 0/36 (0.0%) |
| Signer | winterbaume-signer |
REST-JSON | 19/19 (100.0%) | 7/19 (36.8%) | 0/19 (0.0%) | 0/19 (0.0%) |
| SimpleDB v2 | winterbaume-simpledbv2 |
REST-JSON | 3/3 (100.0%) | 0/3 (0.0%) | 0/3 (0.0%) | 0/3 (0.0%) |
| SNS | winterbaume-sns |
awsQuery | 42/42 (100.0%) | 33/42 (78.6%) | 0/42 (0.0%) | 8/42 (19.0%) |
| SQS | winterbaume-sqs |
awsJson1.0 | 23/23 (100.0%) | 20/23 (87.0%) | 0/23 (0.0%) | 14/23 (60.9%) |
| SSM | winterbaume-ssm |
awsJson1.1 | 146/146 (100.0%) | 41/146 (28.1%) | 0/146 (0.0%) | 7/146 (4.8%) |
| SSO | winterbaume-sso |
REST-JSON | 4/4 (100.0%) | 0/4 (0.0%) | 0/4 (0.0%) | 0/4 (0.0%) |
| ssoadmin | winterbaume-ssoadmin |
? | 28/79 (35.4%) | 25/79 (31.6%) | 0/79 (0.0%) | 0/79 (0.0%) |
| Step Functions | winterbaume-sfn |
awsJson1.0 | 37/37 (100.0%) | 24/37 (64.9%) | 0/37 (0.0%) | 9/37 (24.3%) |
| STS | winterbaume-sts |
awsQuery | 11/11 (100.0%) | 6/11 (54.5%) | 0/11 (0.0%) | 6/11 (54.5%) |
| Support | winterbaume-support |
awsJson1.1 | 6/16 (37.5%) | 5/16 (31.2%) | 0/16 (0.0%) | 0/16 (0.0%) |
| SWF | winterbaume-swf |
awsJson1.0 | 30/39 (76.9%) | 19/39 (48.7%) | 0/39 (0.0%) | 0/39 (0.0%) |
| Synthetics | winterbaume-synthetics |
REST-JSON | 22/22 (100.0%) | 4/22 (18.2%) | 0/22 (0.0%) | 0/22 (0.0%) |
| Textract | winterbaume-textract |
awsJson1.1 | 6/25 (24.0%) | 5/25 (20.0%) | 0/25 (0.0%) | 0/25 (0.0%) |
| Timestream InfluxDB | winterbaume-timestreaminfluxdb |
awsJson1.0 | 19/19 (100.0%) | 13/19 (68.4%) | 0/19 (0.0%) | 0/19 (0.0%) |
| Timestream Query | winterbaume-timestreamquery |
awsJson1.0 | 15/15 (100.0%) | 6/15 (40.0%) | 0/15 (0.0%) | 0/15 (0.0%) |
| Timestream Write | winterbaume-timestreamwrite |
awsJson1.0 | 19/19 (100.0%) | 15/19 (78.9%) | 0/19 (0.0%) | 0/19 (0.0%) |
| Transcribe | winterbaume-transcribe |
awsJson1.1 | 16/43 (37.2%) | 16/43 (37.2%) | 0/43 (0.0%) | 0/43 (0.0%) |
| Transfer | winterbaume-transfer |
awsJson1.1 | 44/71 (62.0%) | 8/71 (11.3%) | 0/71 (0.0%) | 0/71 (0.0%) |
| VPC Lattice | winterbaume-vpclattice |
REST-JSON | 68/73 (93.2%) | 22/73 (30.1%) | 0/73 (0.0%) | 0/73 (0.0%) |
| WAFv2 | winterbaume-wafv2 |
awsJson1.1 | 38/55 (69.1%) | 29/55 (52.7%) | 0/55 (0.0%) | 0/55 (0.0%) |
| WorkSpaces | winterbaume-workspaces |
awsJson1.1 | 50/91 (54.9%) | 16/91 (17.6%) | 0/91 (0.0%) | 0/91 (0.0%) |
| WorkSpaces Web | winterbaume-workspacesweb |
REST-JSON | 68/75 (90.7%) | 27/75 (36.0%) | 0/75 (0.0%) | 0/75 (0.0%) |
| X-Ray | winterbaume-xray |
REST-JSON | 38/38 (100.0%) | 0/38 (0.0%) | 0/38 (0.0%) | 6/38 (15.8%) |
winterbaume: 6228 / 10456 operations across 164 services (59.6%)
moto: 3250 / 10456 operations across 164 services (31.1%)
floci: 147 / 10456 operations across 164 services (1.4%)
kumo: 648 / 10456 operations across 164 services (6.2%)
use winterbaume_core::MockAws;
use winterbaume_sts::StsService;
use winterbaume_iam::IamService;
use winterbaume_s3::S3Service;
let mock = MockAws::builder()
.with_service(StsService::new())
.with_service(IamService::new())
.with_service(S3Service::new())
.build();
let config = aws_config::defaults(BehaviorVersion::latest())
.http_client(mock.http_client())
.credentials_provider(mock.credentials_provider())
.region("us-east-1")
.load()
.await;
let sts = aws_sdk_sts::Client::new(&config);
let resp = sts.get_caller_identity().send().await.unwrap();
assert_eq!(resp.account(), Some("123456789012"));For non-Rust clients, winterbaume-server provides a standalone HTTP server:
cargo run -p winterbaume-server -- --host 127.0.0.1 --port 5555Point the AWS SDK at it:
export AWS_ENDPOINT_URL=http://localhost:5555
aws s3 mb s3://my-bucketwinterbaume-core-- shared infrastructure:MockAwsbuilder,MockServicetrait, per-account/region state management, HTTP client/connector bridge.winterbaume-{service}-- each service crate implementsMockServicewith its own protocol handling and in-memory state.winterbaume-server-- hyper-based HTTP server that registers all service backends.
State is partitioned per account ID and region, matching real AWS isolation semantics.
Winterbaume targets the Rust AWS SDK directly. It provides an in-process HTTP client for aws-sdk-rust, so tests can run without standing up an external mock service. The project also tracks moto coverage and behaviour closely, and vendors moto as a reference implementation.
Use library mode when you are writing Rust tests against aws-sdk-rust and want the fastest setup with no network I/O. Use winterbaume-server when you need to point non-Rust clients, CLIs, or external processes at a mock AWS endpoint over HTTP.
Stub services are routable, but they do not implement service behaviour yet. Requests reach the correct service endpoint shape and then return 501 Not Implemented.
Behaviour depends on the service. Fully stubbed services return 501 Not Implemented, while partially implemented services only support the operations listed in the coverage table above.
Yes. State is stored in memory and isolated by account ID and region so repeated SDK calls can observe changes made by earlier requests in the same mock environment.
It is a multilingual pun built around the reference project name moto. "Winter tree" is the literal reading, but the real joke is the sound and imagery of a Japanese pop-culture name hiding in plain sight.
Apache-2.0. See LICENSE for the full text.
This project vendors moto (Copyright 2012 Steve Pulec, Apache-2.0) as a reference implementation under vendor/moto/. See NOTICE for third-party attribution details.
