NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #997 most downloaded on PyPI
Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
Last release 8 days ago
15 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
7 years old
530 releases · first in 2019
Nothing published for this version
Over the past few months, we carefully selected each breaking change to make, and crafted an extensive upgrade guide to ease your transition to v3. Pl…
We are super happy to announce our new major version – v3.0.0 🎉🎉!
We have made Pydantic v2 the default for Powertools for AWS Lambda (Python) utilities, this was the most requested feature from you. Pydantic v2 is the most impactful upgrade, offering better performance and greater flexibility compared to Pydantic v1.
The second most requested feature was publishing Powertools Lambda layers for different Python versions and architectures, allowing for easier integration across various Lambda environments. This is crucial for libraries like Pydantic v2 and AWS Encryption SDK, which are used by Powertools and require installation for specific architectures and Python version.
Thanks to everyone in the community for their patience and assistance as we've been working on this release. A special thanks to @ericbn for their amazing contributions to this milestone.
Over the past few months, we carefully selected each breaking change to make, and crafted an extensive upgrade guide to ease your transition to v3. Please let us know whether we can make your upgrade process easier.
The section below is an excerpt of what's available in the Upgrade guide
We no longer support Pydantic v1 and have updated our toolkit to support only v2 of the library. We made this change after Pydantic v1 reached End-of-Life on June 2024.
Use the Pydantic v2 Migration Guide to migrate your custom Pydantic models to v2.
To give you a better experience, we're now building our public Powertools for AWS Lambda (Python)'s Lambda layers for specific Python versions (3.8-3.12) and architectures (x86_64 & arm64).
With this change we can now include architecture-specific versions of both Pydantic v2 and AWS Encryption SDK and give you a more streamlined setup.
To take advantage of the new layers, you need to update your functions or deployment setup to include one of the new Lambda layer ARN from the table below:
| Architecture | Python Version | Layer ARN |
|---|---|---|
| x86_64 | 3.8 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python38-x86:{version} |
| x86_64 | 3.9 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python39-x86:{version} |
| x86_64 | 3.10 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python310-x86:{version} |
| x86_64 | 3.11 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python311-x86:{version} |
| x86_64 | 3.12 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python312-x86:{version} |
| arm64 | 3.8 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python38-arm64:{version} |
| arm64 | 3.9 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python39-arm64:{version} |
| arm64 | 3.10 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python310-arm64:{version} |
| arm64 | 3.11 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python311-arm64:{version} |
| arm64 | 3.12 | arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV3-python312-arm64:{version} |
We have modified the Event Source Data classes so optional dictionaries and lists now return empty dictionaries or lists instead of None. This improvement simplifies your code by eliminating the need for conditional checks when accessing these fields, while maintaining backward compatibility with previous implementations.
According to the HTTP RFC, HTTP headers must be case-insensitive. As a result, we have deprecated the get_header_value function to align with this standard. Instead, we recommend using app.current_event.headers.get to access header values directly.
Consequently, the case_sensitive parameter in this function no longer has any effect, as we now ensure consistent casing by normalizing headers for you. This function will be removed in a future release, and we encourage you to adopt the new method to access header values.
| Area | Change | Code Change Required |
|---|---|---|
| Pydantic | We have removed support for Pydantic v1 | No |
| Parser | We have eplaced DynamoDBStreamModel AttributeValue with native Python types |
Yes |
| Lambda Layer | Lambda layers are now compiled according to the specific Python version and architecture | No |
| Event Handler | Headers are case-insensitive, and we have deprecated the get_header_value function. |
Yes |
| Batch Processor | @batch_processor and @async_batch_processor decorators are now deprecated |
Yes |
| Event Source Data Classes | We have updated default values for optional fields. | Yes |
| Parameters | The default cache TTL is now set to 5 minutes | No |
| Parameters | The config parameter is deprecated in favor of boto_config |
Yes |
| JMESPath Functions | The extract_data_from_envelope function is deprecated in favor of query |
Yes |
| Types File | We have removed the type imports from the shared/types.py file |
Yes |
@ericbn, @github-actions, @github-actions[bot], @sthulb, and @leandrodamascena
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The regression issue caused by PR #4863 has been resolved in this patch release. The issue occurred when working with zero numbers in the Data Source
The regression issue caused by PR #4863 has been resolved in this patch release. The issue occurred when working with zero numbers in the Data Source utility's DynamoDBStreamEvent class.
@dependabot, @dependabot[bot], @github-actions, @github-actions[bot], @leandrodamascena, @sthulb and @tlinhart
Nothing published for this version
Nothing published for this version
Nothing published for this version
This release improves the Validation utility, which now returns the validated data, including default values.
This release improves the Validation utility, which now returns the validated data, including default values.
We have improved the Metrics utility, which now can emit metrics using the None unit. We have also fixed a bug in Event Source for Amazon DynamoDB Streams when using numbers with more than 38 digits.
🌟 ⭐ A big thank you to our new contributors: @dracozombie19, and @avonengel
The validate function now returns the validated JSON, including any default values.
Last but least, thank to @miikka, @aminalaee and @ethantkoenig for raising issues.
257eca8 to 9919d6e in /docs (#4878) by @dependabot@Wurstnase, @aminalaee, @avonengel, @dependabot, @dependabot[bot], @dracozombie19, @dreamorosi, @github-actions, @github-actions[bot], @leandrodamascena and @sthulb
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This release adds support for OpenAPI extensions to help you describe functionality beyond the OpenAPI Spec.
This release adds support for OpenAPI extensions to help you describe functionality beyond the OpenAPI Spec.
We also made tons of improvements in the Idempotency docs based on customers feedback on navigation, examples, and limitations.
🌟 ⭐ Huge thanks to everyone who helped in this release, specially @bertpl for crushing a bug in the Idempotency feature.
You can now define extensions using the openapi_extensions parameter. This unblocks a common use case in defining Amazon API Gateway extensions like Authorizers, Integrations, etc.
Based on customer feedback at the Serverless Days ANZ, we improved all code snippets, made navigation more granular, and split DynamoDB vs Redis persistence storage (Infra vs Runtime).
We also made it more explicit everywhere that Idempotency is bound to a particular time window (1h by default) that you can adjust.
@dependabot, @dependabot[bot], @github-actions, @github-actions[bot], @heitorlessa, @hjgraca, @leandrodamascena and @sthulb
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This release enhances the Batch Processing feature, which you can now customize to not throw an error when the entire batch of items fails to process.
This release enhances the Batch Processing feature, which you can now customize to not throw an error when the entire batch of items fails to process.
We have also added three new Pydantic models to our Parser feature to work with authorizers in Amazon API Gateway.
Thanks to @adriantomas, customers can bring their own boto3 client when using Feature Flags feature.
🌟 ⭐ A big thank you to everyone who helped make this release.
You can now set the raise_on_entire_batch_failure option to False to prevent the Batch Processing utility from throwing a BatchProcessingError, when all records in a batch fail to process. This is useful when working with functions that handle batches with a small number of records, or when you use errors as a flow control mechanism.
You can now use the new Pydantic models to validate payloads originating from authorization events in REST and HTTP APIs.
Here are all the modules we've added:
You can now bring your own boto3 client instance when using Feature Flags. This is ideal when you want to reuse or customize the appconfigdata client.
Last but not least, thanks to @Wurstnase for helping us to fix a bug when using CORS in the Event Handler feature.
BatchProcessingError exception when the entire batch fails (#4719) by @leandrodamascena@adriantomas, @dependabot, @dependabot[bot], @github-actions, @github-actions[bot], @heitorlessa, @hjgraca, @leandrodamascena, @ran-isenberg and @sthulb
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →