What's Changed
New Contributors
- @santiagodoldan made their first contribution in https://github.com/Nahuel990/ministack/pull/71
- @jv2222 made their first contribution in https://github.com/Nahuel990/ministack/pull/62
- @dependabot[bot] made their first contribution in https://github.com/Nahuel990/ministack/pull/76
[1.1.18] — 2026-04-02
Added
- EC2
DescribeInstanceCreditSpecifications— returnsstandardCPU credits; fixes Terraform v6 provider compatibility - EC2 Terraform v6 stubs —
DescribeInstanceMaintenanceOptions,DescribeInstanceAutoRecoveryAttribute,ModifyInstanceMaintenanceOptions,DescribeInstanceTopology,DescribeSpotInstanceRequests,DescribeCapacityReservationsall return sensible empty/default responses - Lambda Node.js warm worker pool — Node.js functions now use the same persistent warm worker as Python; supports async/await, Promise, and callback handlers; AWS SDK v2 endpoint patching for local development
- Docker image includes Node.js —
nodejsadded to Alpine base image so container-based Node.js Lambda execution works out of the box in Docker Compose / CI environments - Lambda S3 code fetch —
CreateFunctionandUpdateFunctionCodenow acceptS3Bucket/S3Keyin addition toZipFile; returns error if S3 object not found - Lambda versioning —
Publish=TrueonCreateFunctionandUpdateFunctionCodenow creates immutable numbered versions with their owncode_zip - DynamoDB Streams —
StreamSpecificationonCreateTablenow emits INSERT/MODIFY/REMOVE records on all write operations (PutItem,UpdateItem,DeleteItem,BatchWriteItem,TransactWriteItems); respectsStreamViewType - Kinesis ESM polling — Lambda event source mappings now support Kinesis streams in addition to SQS
Fixed
-
SNS
SubscribeignoresAttributesparameter —RawMessageDelivery,FilterPolicy,FilterPolicyScope,DeliveryPolicy, andRedrivePolicypassed at subscription creation time are now applied immediately -
Lambda warm worker not invalidated on code update —
UpdateFunctionCodeandDeleteFunctionnow invalidate the warm worker pool so the next invocation picks up the new code -
Lambda module-level imports — removed lazy
from ministack.core.lambda_runtime importinside functions; moved to module top level -
S3 chunked transfer encoding — AWS SDK v2 sends
PutObjectwithSTREAMING-AWS4-HMAC-SHA256-PAYLOADchunked encoding; body was stored with chunk headers causing corruptGetObjectresponses; now decoded before storage -
Kinesis validation limits —
PutRecordandPutRecordsnow enforce AWS limits: max 1 MB per record, max 500 records per batch, max 5 MB total payload, max 256-char partition key -
S3 Control routing via
s3-control.localhosthost — requests with host headers3-control.localhostwere intercepted by the S3 virtual-hosted bucket handler instead of reaching the S3 Control API; fixes TerraformListTagsForResourcereturning 404NoSuchResource -
EC2 security group rule deduplication —
AuthorizeSecurityGroupIngress/Egressno longer appends duplicate rules; fixes Terraform showing constant drift -
EC2 default egress rule on created security groups — non-default security groups now include the standard allow-all egress rule matching AWS behaviour
-
EC2 VPC Peering missing Region field —
requesterVpcInfoandaccepterVpcInfonow include<region>in all responses; fixes Terraform failing to parse peering connections -
Lambda
PublishVersionFunctionArn — no longer appends version number to FunctionArn (version is in the Version field); fixes Terraform ARN comparison drift -
Lambda
FunctionUrlConfighardcoded region — now usesMINISTACK_REGIONinstead of hardcodedus-east-1 -
Lambda handler validation — returns proper
Runtime.InvalidEntrypointerror if handler name has no.separator instead of crashing -
RDS error code —
DBInstanceAlreadyExistscorrected toDBInstanceAlreadyExistsFaultmatching AWS error codes -
Thanks to @lubond @jimmyd-be @abedurftig @mig_mit for reporting issues and testing
-
Thanks to @jv2222 and @santiagodoldan for their massive contributions
Tests
- 834 tests total, all passing