v2.15.0
Summary
This release is packed with a number of improvements:
- New external provider formats in Logger
- New Parser models and JMESPath expressions to naturally process S3 Event Notifications targets
- Printing Event Source Data Classes now automatically mask sensitive data
- New flush_metrics in Metrics to support customers using Lambda Web Adapter
- Added support for the China and GovCloud regions in API Gateway Authorizer event (bugfix)
And… a ton of documentation improvements.
⭐ Huge thanks to new contributors: @theipster (S3 events), @neilramsay (Data Class debug), @arjanschaaf (Batch docs) and @leif-ye (API Gateway Event Source)
External provider formats in the Logger utility
Docs: Observability providers
You can now send logs to the observability provider of your choice via Lambda Extensions. In most cases, you shouldn't need any custom Logger configuration, and logs will be shipped asynchronously with no performance impact.

Improved S3 Event Notifications developer experience
Docs: Built-in envelopes, Parser
S3 event notifications can be sometimes be ingested into Lambda via an intermediary such as an SQS queue (i.e. Lambda event source), for various architectural reasons - batching, retries, etc. However, from the Lambda function's perspective, the intermediary might not be too important; what's important is the S3 event notification itself. Now you can easily parse and access the inner payload for SQS-wrapper S3 events.
JMESPath
Parser
Printing Event Source Data Classes
Docs: Debugging
You can now print out the fields of a data class instance to obtain more information. All classes come with a __str__ method that generates a dictionary string which can be quite useful for debugging. Sensitive fields such as secret_access_key and session_token, are labeled as [SENSITIVE], to prevent any accidental disclosure of confidential information.
Flushing metrics manually
You can now manually flush the metrics at any time. This is useful when not running within a standard Lambda handler (e.g: Lambda Web Adapter), where the @log_metrics decorator does not work as intended.
Changes
🌟New features and non-breaking changes
- feat(event_source): support custom json_deserializer; add json_body in SQSEvent (#2200) by @leandrodamascena
- feat(parser): add support for SQS-wrapped S3 event notifications (#2108) by @theipster
- feat(logger): add DatadogLogFormatter and observability provider (#2183) by @heitorlessa
- feat(jmespath): new built-in envelopes to unwrap S3 events (#2169) by @leandrodamascena
- feat(event_source): add support for dynamic partitions in the Api Gateway Authorizer event (#2176) by @leif-ye
- feat(metrics): add flush_metrics() method to allow manual flushing of metrics (#2171) by @rubenfonseca
- feat(event_sources): Add str to Data Classes base DictWrapper (#2129) by @neilramsay
- feat(ci): dispatch GitHub analytics action (#2161) by @rubenfonseca
📜 Documentation updates
- docs(examples): standardize lambda handler function name (#2192) by @leandrodamascena
- feat(parser): add support for SQS-wrapped S3 event notifications (#2108) by @theipster
- docs(we-made-this): add serverless transactional message app (#2182) by @rubenfonseca
- docs(batch): fixed typo in DynamoDB Streams section (#2189) by @arjanschaaf
- feat(logger): add DatadogLogFormatter and observability provider (#2183) by @heitorlessa
- feat(jmespath): new built-in envelopes to unwrap S3 events (#2169) by @leandrodamascena
- feat(metrics): add flush_metrics() method to allow manual flushing of metrics (#2171) by @rubenfonseca
- docs(tutorial): use newer sam cli template; update to py3.10 (#2167) by @heitorlessa
- feat(event_sources): Add str to Data Classes base DictWrapper (#2129) by @neilramsay
- docs(homepage): add customer references section (#2159) by @leandrodamascena
🔧 Maintenance
- chore(deps): bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6 (#2201) by @dependabot
- chore(ci): use new pypi trusted publisher for increase security (#2198) by @heitorlessa
- chore(governance): add Lambda Powertools for .NET in issue templates (#2196) by @leandrodamascena
- chore(deps-dev): bump mkdocs-material from 9.1.8 to 9.1.9 (#2190) by @dependabot
- chore(deps-dev): bump types-requests from 2.28.11.17 to 2.29.0.0 (#2187) by @dependabot
- chore(deps-dev): bump coverage from 7.2.4 to 7.2.5 (#2186) by @dependabot
- chore(deps-dev): bump coverage from 7.2.3 to 7.2.4 (#2179) by @dependabot
- chore(deps-dev): bump cfn-lint from 0.77.3 to 0.77.4 (#2178) by @dependabot
- chore(deps-dev): bump mypy-boto3-xray from 1.26.11.post1 to 1.26.122 (#2173) by @dependabot
- chore(deps-dev): bump aws-cdk from 2.76.0 to 2.77.0 (#2174) by @dependabot
- chore(deps-dev): bump mypy-boto3-lambda from 1.26.115 to 1.26.122 (#2172) by @dependabot
- chore(deps-dev): bump cfn-lint from 0.77.2 to 0.77.3 (#2165) by @dependabot
- docs(homepage): add customer references section (#2159) by @leandrodamascena
- chore(deps-dev): bump mkdocs-material from 9.1.6 to 9.1.8 (#2162) by @dependabot
- chore(deps-dev): bump importlib-metadata from 6.5.0 to 6.6.0 (#2163) by @dependabot
This release was made possible by the following contributors:
@arjanschaaf, @dependabot, @dependabot[bot], @heitorlessa, @leandrodamascena, @leif-ye, @neilramsay, @rubenfonseca, @theipster and Release bot



