/

Homepage

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.

Install

Powertools is available in PyPi. You can use your favourite dependency management tool to install it

  • poetry: poetry add aws-lambda-powertools
  • pip: pip install aws-lambda-powertools

Features

  • 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

Tenets

  • 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

Environment variables used across suite of utilities.

Environment variableDescriptionUtility
POWERTOOLS_SERVICE_NAMESets service name used for tracing namespace, metrics dimension and structured loggingall
POWERTOOLS_METRICS_NAMESPACESets namespace used for metricsMetrics
POWERTOOLS_TRACE_DISABLEDDisables tracingTracing
POWERTOOLS_TRACE_MIDDLEWARESCreates sub-segment for each custom middlewaremiddleware_factory
POWERTOOLS_LOGGER_LOG_EVENTLogs incoming eventLogging
POWERTOOLS_LOGGER_SAMPLE_RATEDebug log samplingLogging
LOG_LEVELSets logging levelLogging

Debug mode

As a best practice, AWS Lambda Powertools logging statements are suppressed. If necessary, you can enable debugging using set_package_logger:

app.py
from aws_lambda_powertools.logging.logger import set_package_logger

set_package_logger()
Edit on GitHub