Skip to content

Homepage

Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.

Ready to use Powertools for AWS Lambda? Jump to Installation.

  • Features


    Adopt one, a few, or all industry practices. Progressively.

    All features

  • Installation


    Install via pip, Lambda Layers, or SAR.

    Get started

  • ❤ Support this project


    Become a public reference, share your work, join the community.

    Support

  • Other languages


    Powertools is also available in other languages.

    Java, TypeScript, .NET

Features

Utility Description
Tracer Decorators and utilities to trace Lambda function handlers, and both synchronous and asynchronous functions
Logger Structured logging made easier, and target to enrich structured logging with key Lambda context details
Metrics Custom Metrics created asynchronously via CloudWatch Embedded Metric Format (EMF)
Event Handler Event handler for API Gateway, ALB, Lambda Function URL, VPC Lattice, AppSync, and Bedrock Agents
Parameters Retrieve and cache parameter values from Parameter Store, Secrets Manager, AppConfig, or DynamoDB
Parser Data parsing and deep validation using Pydantic
Batch Processing Handle partial failures for SQS, Kinesis Data Streams, and DynamoDB Streams
Idempotency Make your Lambda functions idempotent and prevent duplicate execution
Feature Flags A simple rule engine to evaluate when features should be enabled
Validation JSON Schema validator for inbound events and responses
Data Masking Protect confidential data with easy removal or encryption
Streaming Stream datasets larger than available memory
Middleware Factory Create your own middleware to run logic before and after each Lambda invocation
Typing Static typing classes to speedup development in your IDE
Event Source Data Classes Data classes describing the schema of common Lambda event triggers
JMESPath Functions Built-in JMESPath functions to deserialize common encoded JSON payloads
Kafka Deserialize and validate Kafka events with support for Avro, Protocol Buffers, and JSON Schema

Examples

You can find examples in the examples directory and a quick start using SAM CLI:

1
sam init --app-template hello-world-powertools-python --name sam-app --package-type Zip --runtime python3.13 --no-tracing

For a more complete example, check the Powertools for AWS workshop.

Environment variables

Info

Explicit parameters take precedence over environment variables.

Environment variable Description Utility Default
POWERTOOLS_SERVICE_NAME Service name for tracing, metrics, and logging All service_undefined
POWERTOOLS_LOG_LEVEL Sets logging level Logger INFO
POWERTOOLS_LOGGER_LOG_EVENT Logs incoming event Logger false
POWERTOOLS_LOGGER_SAMPLE_RATE Debug log sampling Logger 0
POWERTOOLS_METRICS_NAMESPACE Namespace for metrics Metrics None
POWERTOOLS_METRICS_DISABLED Disables metrics emission Metrics false
POWERTOOLS_TRACE_DISABLED Disables tracing Tracer false
POWERTOOLS_TRACER_CAPTURE_RESPONSE Captures return as metadata Tracer true
POWERTOOLS_TRACER_CAPTURE_ERROR Captures exception as metadata Tracer true
POWERTOOLS_PARAMETERS_MAX_AGE Cache TTL in seconds Parameters 5
POWERTOOLS_PARAMETERS_SSM_DECRYPT Decrypt SSM parameters Parameters false
POWERTOOLS_DEV Increases verbosity for development Multiple false
POWERTOOLS_DEBUG Enables debug logging for Powertools All false

Development mode

When POWERTOOLS_DEV is set to true, it enables development-friendly settings:

Utility Effect
Logger Increases JSON indentation to 4 for readability
Event Handler Enables full traceback errors and CORS in dev mode
Tracer Disables tracing in non-Lambda environments
Metrics Disables metrics emission (can be overridden)

Support Powertools for AWS Lambda (Python)

Tenets

These are our core principles to guide our decision making.

  • AWS Lambda only. We optimize 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).
  • Progressive. Utilities are designed to be incrementally adoptable for customers at any stage of their Serverless journey. They follow language idioms and their community's common practices.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.