All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
Rewritten in TypeScript with a feature flag configuration model.
- TypeScript rewrite with full type definitions
- Feature flag configuration model — each failure mode is an independent flag with its own
percentage; multiple can be active simultaneously timeoutandcorruptionfailure modes- Event-based targeting via
matchconditions (eq,exists,startsWith,regex) - Native AppConfig Feature Flags support with auto-disabled library cache
- Middy middleware via
failure-lambda/middysubpath export - Configuration validation with structured JSON logging (ReDoS detection, range clamping, fail-closed on invalid flags)
- CLI tool (
npx failure-lambda) for managing configuration with saved profiles, SSM and AppConfig backends - Lambda Layer (x86_64, arm64) with Rust proxy for zero-code fault injection across any managed runtime — includes LD_PRELOAD DNS denylist interception
- AWS SDK v3, native
fetch(),dns.lookupmonkey-patching (replacesaws-sdkv2,node-fetch,mitm) - Dual CJS/ESM package output; minimum Node.js 20
- Examples updated to Node.js 22, SDK v3; SAM example includes wrapper and Middy variants
node-fetchandmitmdependencies- Support for Node.js < 20
- Flat
{isEnabled, failureMode, ...}configuration format (0.x)
- Switch to node-fetch@2
- MIT license file
- New sample applications for SAM, CDK, and Serverless Framework
- Updated dependencies
- Fixed mitm listener state management to prevent traffic leaking through during enable/disable
- Fixed mitm not disabling when no longer needed
- Moved mitm object to library global namespace so that it persists across function invocations
- Syntax formatting
- Made AppConfig Lambda extension port configurable using environment variable
- Optional support for AWS AppConfig, allowing to validate failure configuration, deploy configuration using gradual or non-gradual deploy strategy, monitor deployed configuration with automatic rollback if CloudWatch Alarms is configured, and caching of configuration
- Hardcoded default configuration with
isEnabled: false, to use if issues loading configuration from Parameter Store or AppConfig
- Change mitm mode back to connect to fix issue with all connections being blocked
- Changed mitm mode from connect to connection for quicker enable/disable of failure injection
- Renamed block list failure injection to denylist (breaking change for that failure mode)
- Updated dependencies
- Block list failure
- Updated example application to store file in S3 and item in DynamoDB
- Fixed issue with exception injection not throwing the exception
- Disk space failure
- Updated example application to store example file in tmp
- Initial release