🎉 Highlights
This release adds four new services (EMR, WAF v2, AWS Batch, RDS Data API), lands a substantial Glue partition and statistics pass, brings RDS provisioning support, and ships meaningful CloudFormation improvements with Lambda-backed custom resources and EC2 VPC/subnet provisioning. ELBv2, S3, SES, and ECS all see solid conformance work. Welcome to first-time contributor @LorenzoGalassi.
🆕 Four new services
- Amazon EMR management API (Phase 1) (#1321)
- AWS WAF v2 management API (Phase 1) (#1327)
- AWS Batch service support (#1332)
- RDS Data API (#1262)
That's a major catalog expansion in one release: from analytics (EMR) and edge security (WAF v2) to batch compute (Batch) and serverless SQL (RDS Data API).
🗄️ RDS provisioning support
Beyond the existing real-Docker-backed RDS engines, provisioning lifecycle is now supported (#1253), so the full create / describe / modify / delete flow works as real AWS would handle it.
🪨 Glue: partitions, statistics, and determinism
A coordinated Glue Data Catalog pass lands this cycle:
- Partition APIs support (#1315)
- Column statistics support (#1309)
- Table statistics deletion (#1324)
- Missing table deletes rejected (#1323)
- Deterministic partition ordering from
GetPartitions(#1335)
🧱 CloudFormation: custom resources + VPC/subnet provisioning
Two notable CloudFormation improvements:
- Lambda-backed custom resources (
AWS::CloudFormation::CustomResource) and layer versions now provision (#1146) - EC2 VPC and subnet resources provision via CloudFormation so cross-stack exports resolve correctly (#1342)
🔐 STS session secret persistence
A subtle but important fix: STS session secret keys now persist (#1266), so IAM-token-based authentication against RDS and ElastiCache actually validates across requests.
🚨 SQS message size correction
MaximumMessageSize upper bound corrected from 256KB to the actual AWS maximum of 1MB (#1339). If your tests relied on Floci rejecting messages between 256KB and 1MB, those will now pass as they do in real AWS.
✨ New Features
New services
- feat(emr): add Amazon EMR management API (Phase 1) by @hectorvent in #1321
- feat(wafv2): add AWS WAF v2 management API (Phase 1) by @hectorvent in #1327
- feat(batch): add AWS Batch service support by @devansh-jain-18 in #1332
- feat(rds-data): add RDS Data API support by @devansh-jain-18 in #1262
Service expansions
- feat(rds): add RDS provisioning support by @jvanzyl in #1253
- feat(elbv2): improve ELBv2 target resolution and persistence by @jvanzyl in #1254
- feat(cloudformation): provision Lambda-backed custom resources and layer versions by @MattLish in #1146
🐛 Bug Fixes
Glue
- fix(glue): support partition APIs by @electrum in #1315
- fix(glue): support column statistics by @electrum in #1309
- fix(glue): support table statistics deletion by @electrum in #1324
- fix(glue): reject missing Glue table deletes by @electrum in #1323
- fix(glue): return partitions in deterministic order from
GetPartitionsby @hectorvent in #1335
S3
- fix(s3): make S3 conditional puts atomic by @electrum in #1329
- fix(s3): return
BadRequestfor S3 dot-dot paths by @electrum in #1325
SQS / SES
- fix(sqs):
MaximumMessageSizeshould be 1MB, not 256KB by @kapoorp99 in #1339 - fix(sqs): report
ApproximateNumberOfMessagesDelayedinGetQueueAttributesby @TomDav28 in #1285 - fix(sqs): release in-flight
ReceiveMessagelong polls when their queue is deleted by @TomDav28 in #1286 - fix(ses): persist inline options on v2
CreateConfigurationSetby @okinaka in #1307 - fix(ses): keep
MailFromAttributesblock when MAIL FROM is unconfigured by @okinaka in #1310 - fix(ses): omit
MailFromAttributesif MAIL FROM domain is not configured by @iam-ssrivastav in #1273 - fix(ses): omit unknown identities from
GetIdentityNotificationAttributesby @okinaka in #1338
ELBv2 / ECS / EC2
- fix(elbv2): enforce ALB subnet availability zone rules by @shrimptails-f in #1247
- fix(ecs): add network mode and resources validation for Fargate tasks by @someear9h in #1274
- fix(ec2): embed image catalog in native image and load it lazily by @hectorvent in #1308
Cognito / Athena / AppConfig / MSK
- fix(cognito): include
USERNAMEin SRPPASSWORD_VERIFIERchallenge by @LorenzoGalassi in #1316 - fix(athena): align
GetWorkGroupwith AWS behavior by @LorenzoGalassi in #1301 - fix(appconfig): stop AppConfig route hijacking S3 bucket named
configurationby @LorenzoGalassi in #1317 - fix(msk): populate
currentBrokerSoftwareInfoin cluster describe response by @silfabio in #1238
CloudFormation / STS / Compat
- fix(cloudformation): provision EC2 VPC/subnet resources so exports resolve by @hectorvent in #1342
- fix(sts): persist session secret key so RDS/ElastiCache IAM tokens validate by @simlau in #1266
- fix(compat): pre-create localstack/floci init hook dirs by @TomDav28 in #1337
🧰 Refactors & Tests
- refactor: remove unused code by @shrimptails-f in #1303
- test: add SDK coverage for S3 ranged
GetObjectby @jvanzyl in #1293 - test(ec2): avoid mixed-type matcher in route table integration test by @shrimptails-f in #1304
- test(elbv2): use two subnets so ALB tests satisfy the two-AZ rule by @hectorvent in #1314
📚 Documentation
- docs(lambda): document Podman rootless support and Runtime API host override by @hectorvent in #1340
👋 New Contributors
A warm welcome making their first contribution to Floci:
Full Changelog: 1.5.24...1.5.25