Summary
This release adds the most requested feature ever: observability providers. You can now send custom metrics to Datadog using the same optimized development experience Powertools for AWS Lambda offers.
Also, you can now use our provided Lambda Layer in the new AWS Israel region (il-central-1).
⭐ ⭐ Huge thanks to Petar Lishov and Roger Zhang for your help!
External observability providers
Three years ago, we launched Powertools for AWS Lambda Python, making it easier to instrument your code with distributed tracing (Tracer), structured logging (Logger), and custom metrics (Metrics).
With the community, we’ve grown way past Observability and into several best practices, including 16 major features integrating with 15+ AWS services.
Today, we couldn’t be happier to share what we’ve been working with the community for the last 4 months. You can now switch back and forth between CloudWatch EMF and Datadog for creating custom metrics, with minimal friction.
We will continue to develop our main integration with Amazon CloudWatch EMF and AWS X-Ray. That said, this release opens up possibilities for integrating with other AWS Lambda observability partners within Powertools for AWS Lambda.
We would love to hear from you on which observability provider we should prioritize next!
Changes
- refactor(metrics): move from protocol to ABC; split provider tests (#2934) by @leandrodamascena
🌟New features and non-breaking changes
- feat(metrics): add Datadog observability provider (#2906) by @roger-zhangg
- feat(event_handler): allow stripping route prefixes using regexes (#2521) by @royassis
- feat(layers): add new comercial region Israel(Tel Aviv) (#2907) by @leandrodamascena
- feat(metrics): support to bring your own metrics provider (#2194) by @roger-zhangg
📜 Documentation updates
- docs(roadmap): add GovCloud and China region item (#2960) by @heitorlessa
- docs(metrics): update Datadog integration diagram (#2954) by @aal80
- feat(metrics): add Datadog observability provider (#2906) by @roger-zhangg
- feat(event_handler): allow stripping route prefixes using regexes (#2521) by @royassis
- chore(deps): bump gitpython from 3.1.31 to 3.1.32 in /docs (#2948) by @dependabot
- chore(docs): include the environment variables section in the utilities documentation (#2925) by @barreeeiroo
- chore(docs): disable line length rule using older syntax (#2920) by @heitorlessa
- feat(layers): add new comercial region Israel(Tel Aviv) (#2907) by @leandrodamascena
- docs(roadmap): update roadmap themes (#2915) by @heitorlessa
- feat(metrics): support to bring your own metrics provider (#2194) by @roger-zhangg
- docs(batch): explain record type discrepancy in failure and success handler (#2868) by @duc00
- docs(navigation): remove nofollow attribute for internal links (#2867) by @leandrodamascena
- docs(tutorial): add support for Python 3.11 (#2860) by @leandrodamascena
- chore(deps): bump squidfunk/mkdocs-material from
33e28bd
tocd3a522
in /docs (#2859) by @dependabot - docs(batch): new visuals and error handling section (#2857) by @heitorlessa
- docs(navigation): add nofollow attribute (#2842) by @leandrodamascena
🐛 Bug and hot fixes
- fix(parser): API Gateway V2 request context scope field should be optional (#2961) by @leandrodamascena
- refactor(e2e): support fail fast in get_lambda_response (#2912) by @heitorlessa
- fix(metrics): proxy service and namespace attrs to provider (#2910) by @leandrodamascena
- fix(logger): strip xray_trace_id when explicitly disabled (#2852) by @heitorlessa
🔧 Maintenance
- chore(deps): bump actions/setup-node from 3.8.0 to 3.8.1 (#2970) by @dependabot
- chore(deps): bump the layer-balancer group in /layer/scripts/layer-balancer with 3 updates (#2971) by @dependabot
- chore(deps-dev): bump the boto-typing group with 3 updates (#2967) by @dependabot
- chore(deps-dev): bump radon from 5.1.0 to 6.0.1 (#2964) by @dependabot
- chore(deps-dev): bump aws-cdk from 2.91.0 to 2.92.0 (#2965) by @dependabot
- chore(deps): bump actions/dependency-review-action from 3.0.7 to 3.0.8 (#2963) by @dependabot
- docs(metrics): update Datadog integration diagram (#2954) by @aal80
- chore(deps-dev): bump cfn-lint from 0.79.6 to 0.79.7 (#2956) by @dependabot
- chore(deps): bump actions/setup-node from 3.7.0 to 3.8.0 (#2957) by @dependabot
- chore(deps-dev): bump xenon from 0.9.0 to 0.9.1 (#2955) by @dependabot
- feat(metrics): add Datadog observability provider (#2906) by @roger-zhangg
- chore(deps): bump pypa/gh-action-pypi-publish from 1.8.9 to 1.8.10 (#2946) by @dependabot
- chore(deps): bump gitpython from 3.1.31 to 3.1.32 in /docs (#2948) by @dependabot
- chore(deps-dev): bump aws-cdk from 2.90.0 to 2.91.0 (#2947) by @dependabot
- chore(deps-dev): bump the boto-typing group with 1 update (#2944) by @dependabot
- chore(deps): bump pypa/gh-action-pypi-publish from 1.8.8 to 1.8.9 (#2943) by @dependabot
- chore(deps-dev): bump ruff from 0.0.283 to 0.0.284 (#2940) by @dependabot
- chore(docs): include the environment variables section in the utilities documentation (#2925) by @barreeeiroo
- chore(deps): bump actions/dependency-review-action from 3.0.6 to 3.0.7 (#2941) by @dependabot
- chore(deps-dev): bump ruff from 0.0.282 to 0.0.283 (#2937) by @dependabot
- chore(deps-dev): bump aws-cdk from 2.89.0 to 2.90.0 (#2932) by @dependabot
- chore(deps): bump the layer-balancer group in /layer/scripts/layer-balancer with 3 updates (#2933) by @dependabot
- chore(deps-dev): bump the boto-typing group with 4 updates (#2928) by @dependabot
- chore(deps): bump slsa-framework/slsa-github-generator from 1.7.0 to 1.8.0 (#2927) by @dependabot
- chore(maintenance): enables publishing docs and changelog, running e2e tests only in the main repository (#2924) by @ivica-k
- chore(docs): disable line length rule using older syntax (#2920) by @heitorlessa
- docs(roadmap): update roadmap themes (#2915) by @heitorlessa
- chore(ci): enable protected branch auditing (#2913) by @heitorlessa
- chore(deps): bump the layer-balancer group in /layer/scripts/layer-balancer with 2 updates (#2904) by @dependabot
- chore(deps-dev): bump ruff from 0.0.281 to 0.0.282 (#2905) by @dependabot
- feat(metrics): support to bring your own metrics provider (#2194) by @roger-zhangg
- chore(deps-dev): bump ruff from 0.0.280 to 0.0.281 (#2891) by @dependabot
- chore(deps-dev): bump sentry-sdk from 1.28.1 to 1.29.0 (#2900) by @dependabot
- chore(deps-dev): bump cfn-lint from 0.79.5 to 0.79.6 (#2899) by @dependabot
- chore(deps-dev): bump the boto-typing group with 11 updates (#2901) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.30 to 1.18.31 in /layer/scripts/layer-balancer (#2889) by @dependabot
- chore(deps-dev): bump aws-cdk from 2.88.0 to 2.89.0 (#2887) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2/service/lambda from 1.38.1 to 1.39.0 in /layer/scripts/layer-balancer (#2890) by @dependabot
- chore(deps-dev): bump mkdocs-material from 9.1.19 to 9.1.21 (#2894) by @dependabot
- chore(ci): group dependabot updates (#2896) by @heitorlessa
- chore(deps-dev): bump mypy-boto3-logs from 1.28.1 to 1.28.15 (#2880) by @dependabot
- chore(deps-dev): bump mypy-boto3-appconfigdata from 1.28.0 to 1.28.15 (#2879) by @dependabot
- chore(deps-dev): bump mypy-boto3-lambda from 1.28.11 to 1.28.15 (#2878) by @dependabot
- chore(deps-dev): bump mypy-boto3-xray from 1.28.0 to 1.28.15 (#2881) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.29 to 1.18.30 in /layer/scripts/layer-balancer (#2875) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2/service/lambda from 1.38.0 to 1.38.1 in /layer/scripts/layer-balancer (#2876) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2 from 1.19.0 to 1.19.1 in /layer/scripts/layer-balancer (#2877) by @dependabot
- chore(deps-dev): bump cfn-lint from 0.79.4 to 0.79.5 (#2870) by @dependabot
- docs(navigation): remove nofollow attribute for internal links (#2867) by @leandrodamascena
- chore(deps-dev): bump mypy-boto3-cloudformation from 1.28.10 to 1.28.12 (#2864) by @dependabot
- chore(deps-dev): bump mypy-boto3-cloudwatch from 1.28.0 to 1.28.12 (#2865) by @dependabot
- chore(deps-dev): bump cfn-lint from 0.79.3 to 0.79.4 (#2862) by @dependabot
- chore(deps-dev): bump mypy-boto3-appconfig from 1.28.0 to 1.28.12 (#2861) by @dependabot
- chore(deps-dev): bump mypy-boto3-ssm from 1.28.0 to 1.28.12 (#2863) by @dependabot
- chore(deps): bump squidfunk/mkdocs-material from
33e28bd
tocd3a522
in /docs (#2859) by @dependabot - chore(deps-dev): bump cfn-lint from 0.78.2 to 0.79.3 (#2854) by @dependabot
- docs(navigation): add nofollow attribute (#2842) by @leandrodamascena
- chore(deps-dev): bump mypy-boto3-lambda from 1.28.0 to 1.28.11 (#2845) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.18.28 to 1.18.29 in /layer/scripts/layer-balancer (#2844) by @dependabot
- chore(deps): bump github.com/aws/aws-sdk-go-v2/service/lambda from 1.37.1 to 1.38.0 in /layer/scripts/layer-balancer (#2843) by @dependabot
- chore(deps-dev): bump mypy-boto3-dynamodb from 1.28.0 to 1.28.11 (#2847) by @dependabot
- chore(deps): bump pydantic from 1.10.11 to 1.10.12 (#2846) by @dependabot
This release was made possible by the following contributors:
@aal80, @barreeeiroo, @dependabot, @dependabot[bot], @duc00, @github-actions, @github-actions[bot], @heitorlessa, @ivica-k, @leandrodamascena, @roger-zhangg and @royassis