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