AWS Lambda Powertools Python
Powertools is a suite of utilities for AWS Lambda Functions that makes tracing with AWS X-Ray, structured logging and creating custom metrics asynchronously easier.
Powertools is available in PyPi. You can use your favourite dependency management tool to install it
- Tracing - Decorators and utilities to trace Lambda function handlers, and both synchronous and asynchronous functions
- Logging - Structured logging made easier, and decorator to enrich structured logging with key Lambda context details
- Metrics - Custom Metrics created asynchronously via CloudWatch Embedded Metric Format (EMF)
- Bring your own middleware - Decorator factory to create your own middleware to run logic before, and after each Lambda invocation
- AWS Lambda only – We optimise for AWS Lambda function environments and supported runtimes only. Utilities might work with web frameworks and non-Lambda environments, though they are not officially supported.
- Eases the adoption of best practices – The main priority of the utilities is to facilitate best practices adoption, as defined in the AWS Well-Architected Serverless Lens; all other functionality is optional.
- Keep it lean – Additional dependencies are carefully considered for security and ease of maintenance, and prevent negatively impacting startup time.
- We strive for backwards compatibility – New features and changes should keep backwards compatibility. If a breaking change cannot be avoided, the deprecation and migration process should be clearly defined.
- We work backwards from the community – We aim to strike a balance of what would work best for 80% of customers. Emerging practices are considered and discussed via Requests for Comment (RFCs)
- Idiomatic – Utilities follow programming language idioms and language-specific best practices.
* Core utilities are Tracer, Logger and Metrics. Optional utilities may vary across languages.
Environment variables used across suite of utilities.
|POWERTOOLS_SERVICE_NAME||Sets service name used for tracing namespace, metrics dimension and structured logging||all|
|POWERTOOLS_METRICS_NAMESPACE||Sets namespace used for metrics||Metrics|
|POWERTOOLS_TRACE_MIDDLEWARES||Creates sub-segment for each custom middleware||middleware_factory|
|POWERTOOLS_LOGGER_LOG_EVENT||Logs incoming event||Logging|
|POWERTOOLS_LOGGER_SAMPLE_RATE||Debug log sampling||Logging|
|LOG_LEVEL||Sets logging level||Logging|
As a best practice, AWS Lambda Powertools logging statements are suppressed. If necessary, you can enable debugging using
from aws_lambda_powertools.logging.logger import set_package_logger set_package_logger()