🎉 Highlights
This release brings CloudFormation SAM transform support and nested stack deployment, a major OpenSearch overhaul with 3.x support and a real ES 7.10 OSS image, KMS Grant APIs, and a long-requested global CORS filter for browser-based local development. Plus solid lifecycle fixes across Lambda, ECS, ECR, and EC2. Welcome to the 6 first-time contributors.
🧱 CloudFormation: SAM transforms + nested stacks
Two major CloudFormation gaps close in this release:
AWS::Serverless-2016-10-31SAM transform — templates using the SAM macro are now expanded and deployed (#1012)AWS::CloudFormation::Stack— nested stack deployment is implemented end-to-end, including destroy polling that briefly retains deleted stacks (#1052, #1029)
Together, these unblock a large class of real-world IaC stacks that combine SAM with nested CFN modules.
🔍 OpenSearch: 3.x + real ES 7.10 OSS
OpenSearch now supports engine version 3.x, validates engine versions, and uses a real ES 7.10 OSS image for legacy Elasticsearch domains (#1025). Round-trip of VPC, security, and encryption options plus per-family instance type metadata is also wired up (#1039), so Terraform/CDK domains with realistic configs round-trip cleanly.
🔐 KMS Grants
CreateGrant, ListGrants, RevokeGrant, RetireGrant, and ListRetirableGrants are now supported (#1073), enabling local testing of fine-grained KMS authorization flows.
🌐 Global CORS filter
Floci now ships a configurable global CORS filter, making browser-based local development against the emulator finally pleasant (#849). No more proxying through your dev server just to hit S3 from a frontend.
✨ New Features
- feat(cloudformation): support
AWS::Serverless-2016-10-31SAM Transform by @dixitrathod16 in #1012 - feat(opensearch): support OpenSearch 3.x, validate engine versions, real ES 7.10 OSS image by @ShubhamDX in #1025
- feat(opensearch): round-trip VPC/security/encryption options and per-family instance type metadata by @ShubhamDX in #1039
- feat(kms): add KMS Grant APIs by @nblomquist in #1073
- feat: add global CORS filter for browser-based local development by @fredpena in #849
🐛 Bug Fixes
CloudFormation
- fix(cloudformation): implement nested stack deployment via
AWS::CloudFormation::Stackby @MattLish in #1052 - fix(cloudformation): retain deleted stacks briefly for destroy polling by @shrimptails-f in #1029
S3
- fix(s3): implement
TaggingDirective=COPYdefault inCopyObjectby @edjeffreys in #1049 - fix(s3): omit whole-object checksum headers on range responses by @ahmd-soliman in #1040
- fix(s3): clean up versioned file data on permanent version deletion by @edjeffreys in #1045
EC2
- fix(ec2): fix
DescribeNetworkInterfaces(#1031) by @nblomquist in #1035 - fix(ec2): skip terminated instances in
DescribeNetworkInterfacesby @nblomquist in #1074 - fix(ec2): add
volumeIdtoBlockDeviceMappinganddisableApiStop/disableApiTerminationfields by @thanhquang2004 in #1028
Lambda / ECS / ECR / ELBv2
- fix(lambda): Lambda WarmPool timeout when stopping multiple containers by @steve-hb in #1055
- fix(ecs): reconcile task lifecycle when container exits naturally by @hectorvent in #1078
- fix(ecr): shutdown ECR registry manager on observable shutdown event by @steve-hb in #1063
- fix(elbv2): offload Lambda invocation to a worker thread by @okinaka in #1034
API Gateway / EventBridge
- fix(apigw-v2): populate
pathParametersin Lambda proxy event for HTTP API integrations by @MattLish in #1067 - fix(apigateway): resolve
_user_request_APIs created outside default region by @JonghyeokNam in #1032 - fix(eventbridge): enforce
$ornegation in event pattern matching by @jhuiting in #1068
📚 Documentation
- docs: add Neptune service page and fix missing index entries (#950, #951) by @hectorvent in #1056
👋 New Contributors
A warm welcome to everyone making their first contribution to Floci:
- @MattLish in #1052
- @edjeffreys in #1049
- @shrimptails-f in #1029
- @thanhquang2004 in #1028
- @jhuiting in #1068
- @JonghyeokNam in #1032
Full Changelog: 1.5.19...1.5.20