π Highlights
This release adds a brand-new service, AWS AppSync, lands a substantial CloudFormation overhaul (ECS + ELBv2 provisioning, persistence, rollback, ApiGatewayV2 updates), brings SES configuration set destinations to SNS plus suppression-list send-time enforcement, and unlocks EKS clusters reachable from the host. SNS gets mock mobile push, S3 gains SSE-C enforcement, and the spawned-container DNS path now resolves public hostnames. Welcome to the 7 first-time contributors.
π New service: AWS AppSync
Floci now emulates AWS AppSync (Phase 1 management API), enabling local testing of GraphQL API provisioning and configuration workflows (#1108). Documentation is included (#1149).
π§± CloudFormation overhaul
A coordinated set of CloudFormation improvements lands together:
- ECS resources provisionable via CloudFormation (#1120)
- ELBv2 resources provisionable via CloudFormation (#1121)
- Stacks persist across restart (#1124)
- Failed stack creates roll back (#1123)
- ApiGatewayV2 supports the CloudFormation update path (#1122)
Together these mean real IaC workloads that combine ECS services behind ALBs, defined as CloudFormation, now deploy, update, persist, and clean up the way they would in real AWS.
π¨ SES: events to SNS + suppression at send time
Two notable SES additions:
- SES events publish to SNS configuration set destinations (#1106), so notification fan-out from email events works end to end
- Suppression list applied during send with per-configuration-set
SuppressionOptionsoverride (#1109) - V1
ConfigurationSetEventDestinationCRUD (#1111) rounds out the destinations API
βΈοΈ EKS clusters reachable from the host
Real-mode EKS clusters can now be reached and authenticated from the host (#1167). This pairs with the spawned-container DNS fix (#1168), which lets containers launched by Floci resolve the public localhost.floci.io hostnames, so end-to-end flows like Lambda invoking S3 through the virtual-host URL just work.
π± SNS mobile push (mocked)
iOS and Android platform endpoints are now mocked (#1115), unblocking local testing of mobile push delivery paths without real APNS/FCM credentials.
β¨ New Features
- feat(appsync): AWS AppSync management API (Phase 1) by @AgustinBertagna in #1108
- feat(cloudformation): persist stacks across restart by @hectorvent in #1124
- feat(ecs): provision ECS resources via CloudFormation by @hectorvent in #1120
- feat(elbv2): provision ELBv2 resources via CloudFormation by @hectorvent in #1121
- feat(ecs): honour
RunTaskcontainerOverrides(command + environment) by @lazy-ninja in #1151 - feat(eks): make real-mode clusters reachable and authenticable from the host by @hectorvent in #1167
- feat(s3): enforce SSE-C customer keys by @electrum in #1143
- feat(sns): mock mobile push for iOS and Android platform endpoints by @ClementAndreDupuy in #1115
- feat(ses): publish SES events to SNS configuration set destinations by @okinaka in #1106
- feat(ses): apply suppression list during send with per-CS
SuppressionOptionsoverride by @okinaka in #1109 - feat(ses): support V1
ConfigurationSetEventDestinationCRUD by @okinaka in #1111 - feat(kms): add
GenerateRandomaction by @nblomquist in #1036
π Bug Fixes
CloudFormation
- fix(cloudformation): roll back failed stack creates by @hectorvent in #1123
- fix(apigatewayv2): support CloudFormation update path by @hectorvent in #1122
S3 / EventBridge
- fix(s3): handle empty object suffix ranges by @electrum in #1142
- fix(s3): error on unsupported S3 Select expressions by @codingkiddo in #1160
- fix(eventbridge): propagate
PutEventscall region and account through pattern matching and delivered envelope by @okinaka in #1125
API Gateway / ELB / ECS / Lambda
- fix(apigateway): implement
EndpointConfigurationfor REST APIs by @Arthur-0896 in #1116 - fix(elb): return
TargetGroupNotFoundfor missing target groups by @JonghyeokNam in #1161 - fix(ecs): preserve create-time resource tags by @cyphercodes in #1139
- fix(lambda): support path-style ECR URIs for image functions by @shrimptails-f in #1135
ECR / Athena / Docker / DNS / Core
- fix(ecr): resolve backing registry endpoint from the control plane by @shrimptails-f in #1113
- fix(athena): align metadata behavior with AWS by @sabino in #1119
- fix(docker): retry transient registry failures during image pull by @okinaka in #1117
- fix(dns): resolve public hostnames from spawned containers by @hectorvent in #1168
- fix: use region consistently across service operations by @lan1812783 in #1105
π Documentation
- docs: add AppSync service documentation by @AgustinBertagna in #1149
- docs: add light/dark logo branding, mkdocs theming, and README badges by @hectorvent in #1150
π§° Internals & Dependencies
- chore(deps): bump
actions/checkoutfrom 4 to 6.0.2 by @dependabot in #1159 - chore(deps): bump
aws-actions/configure-aws-credentialsfrom 4 to 6.1.2 by @dependabot in #1158 - chore(deps): bump the
actions-minor-patchgroup with 5 updates by @dependabot in #1157
π New Contributors
A warm welcome to everyone making their first contribution to Floci:
- @AgustinBertagna in #1108
- @ClementAndreDupuy in #1115
- @sabino in #1119
- @cyphercodes in #1139
- @electrum in #1142
- @lan1812783 in #1105
- @lazy-ninja in #1151
Full Changelog: 1.5.21...1.5.22