Changelog¶
All notable changes to this project will be documented in this file.
This project follows Keep a Changelog format for changes and adheres to Semantic Versioning.
[Unreleased]¶
[1.14.0] - 2021-04-09¶
Added¶
- Event handlers: New core utility to easily handle incoming requests tightly integrated with Data Classes; AppSync being the first as we gauge from the community what additional ones would be helpful
- Documentation: Enabled versioning to access docs on a per release basis or staging docs (
develop
branch) - Documentation: Links now open in a new tab and improved snippet line highlights
- Documentation(validation): JSON Schema snippets and more complete examples
- Documentation(idempotency): Table with expected configuration values for hash key and TTL attribute name when using the default behaviour
- Documentation(logger): New example on how to set logging record timestamps in UTC
- Parser(S3): Support for the new S3 Object Lambda Event model (
S3ObjectLambdaEvent
) - Parameters: Support for DynamoDB Local via
endpoint_url
parameter, including docs - Internal: Include
make pr
in pre-commit hooks when contributing to shorten feedback loop on pre-commit specific linting
Fixed¶
- Parser: S3Model now supports keys with 0 length
- Tracer: Lock X-Ray SDK to 2.6.0 as there's been a regression upstream in 2.7.0 on serializing & capturing exceptions
- Data Classes(API Gateway): Add missing property
operationName
within request context - Misc.: Numerous typing fixes to better to support MyPy across all utilities
- Internal: Downgraded poetry to 1.1.4 as there's been a regression with
importlib-metadata
in 1.1.5 not yet fixed
[1.13.0] - 2021-03-23¶
Added¶
- Data Classes: New S3 Object Lambda event
Fixed¶
- Docs: Lambda Layer SAM template reference example
[1.12.0] - 2021-03-17¶
Added¶
- Parameters: New
force_fetch
param to always fetch the latest and bypass cache, if available - Data Classes: New AppSync Lambda Resolver event covering both Direct Lambda Resolver and Amplify GraphQL Transformer Resolver
@function
- Data Classes: New AppSync scalar utilities to easily compose Lambda Resolvers with date utils, uuid, etc.
- Logger: Support for Correlation ID both in
inject_lambda_context
decorator andset_correlation_id
method - Logger: Include new
exception_name
key to help customers easily enumerate exceptions across all functions
Fixed¶
- Tracer: Type hint on return instance that made PyCharm no longer recognize autocompletion
- Idempotency: Error handling for missing idempotency key and
save_in_progress
errors
[1.11.0] - 2021-03-05¶
Fixed¶
- Tracer: Lazy loads X-Ray SDK to increase perf by 75% for those not instantiating Tracer
- Metrics: Optimize validation and serialization to increase perf by nearly 50% for large operations (<1ms)
Added¶
- Dataclass: Add new Amazon Connect contact flow event
- Idempotency: New Idempotency utility
- Docs: Add example on how to integrate Batch utility with Sentry.io
- Internal: Added performance SLA tests for high level imports and Metrics validation/serialization
[1.10.5] - 2021-02-17¶
No changes. Bumped version to trigger new pipeline build for layer publishing.
[1.10.4] - 2021-02-17¶
Fixed¶
- Docs: Fix anchor tags to be lower case
- Docs: Correct the docs location for the labeller
[1.10.3] - 2021-02-04¶
Added¶
- Docs: Migrated from Gatsby to MKdocs documentation system
- Docs: Included Getting started and Advanced sections in Core utilities, including additional examples
Fixed¶
- Tracer: Disabled batching segments as X-Ray SDK does not flush traces upon reaching limits
- Parser: Model type is now compliant with mypy
[1.10.2] - 2021-02-04¶
Fixed¶
- Utilities: Correctly handle and list multiple exceptions in SQS batch processing utility.
- *Docs:: Fix typos on AppConfig docstring import, and
SnsModel
typo in parser. - Utilities:
typing_extensions
package is now only installed in Python < 3.8
[1.10.1] - 2021-01-19¶
Fixed¶
- Utilities: Added
SnsSqsEnvelope
inparser
to dynamically adjust model mismatch when customers use SNS + SQS instead of SNS + Lambda, since we've discovered three payload keys are slightly different.
[1.10.0] - 2021-01-18¶
Added¶
- Utilities: Added support for AppConfig in Parameters utility
- Logger: Added support for
extra
parameter to add additional root fields when logging messages - Logger: Added support to Pytest Live Log feat. via feature toggle
POWERTOOLS_LOG_DEDUPLICATION_DISABLED
- Tracer: Added support to disable auto-capturing response and exception as metadata
- Utilities: Added support to handle custom string/integer formats in JSON Schema in Validator utility
- Install: Added new Lambda Layer with all extra dependencies installed, available in Serverless Application Repository (SAR)
Fixed¶
- Docs: Added missing SNS parser model
- Docs: Added new environment variables for toggling features in Logger and Tracer:
POWERTOOLS_LOG_DEDUPLICATION_DISABLED
,POWERTOOLS_TRACER_CAPTURE_RESPONSE
,POWERTOOLS_TRACER_CAPTURE_ERROR
- Docs: Fixed incorrect import for Cognito data classes in Event Sources utility
[1.9.1] - 2020-12-21¶
Fixed¶
- Logger: Bugfix to prevent parent loggers with the same name being configured more than once
Added¶
- Docs: Add clarification to Tracer docs for how
capture_method
decorator can cause function responses to be read and serialized. - Utilities: Added equality to ease testing Event source data classes
- Package: Added
py.typed
for initial work needed for PEP 561 compliance
[1.9.0] - 2020-12-04¶
Added¶
- Utilities: Added Kinesis, S3, CloudWatch Logs, Application Load Balancer, and SES support in
Parser
- Docs: Sidebar menu are now always expanded
Fixed¶
- Docs: Broken link to GitHub to homepage
[1.8.0] - 2020-11-20¶
Added¶
- Utilities: Added support for new EventBridge Replay field in
Parser
andEvent source data classes
- Utilities: Added SNS support in
Parser
- Utilities: Added API Gateway HTTP API data class support for new IAM and Lambda authorizer in
Event source data classes
- Docs: Add new FAQ section for Logger on how to enable debug logging for boto3
- Docs: Add explicit minimal set of permissions required to use Layers provided by Serverless Application Repository (SAR)
Fixed¶
- Docs: Fix typo in Dataclasses example for SES when fetching common email headers
[1.7.0] - 2020-10-26¶
Added¶
- Utilities: Add new
Parser
utility to provide parsing and deep data validation using Pydantic Models - Utilities: Add case insensitive header lookup, and Cognito custom auth triggers to
Event source data classes
Fixed¶
- Logger: keeps Lambda root logger handler, and add log filter instead to prevent child log records duplication
- Docs: Improve wording on adding log keys conditionally
[1.6.1] - 2020-09-23¶
Fixed¶
- Utilities: Fix issue with boolean values in DynamoDB stream event data class.
[1.6.0] - 2020-09-22¶
Added¶
- Metrics: Support adding multiple metric values to a single metric name
- Utilities: Add new
Validator
utility to validate inbound events and responses using JSON Schema - Utilities: Add new
Event source data classes
utility to easily describe event schema of popular event sources - Docs: Add new
Testing your code
section to both Logger and Metrics page, and content width is now wider - Tracer: Support for automatically disable Tracer when running a Chalice app
Fixed¶
- Docs: Improve wording on log sampling feature in Logger, and removed duplicate content on main page
- Utilities: Remove DeleteMessageBatch API call when there are no messages to delete
[1.5.0] - 2020-09-04¶
Added¶
- Logger: Add
xray_trace_id
to log output to improve integration with CloudWatch Service Lens - Logger: Allow reordering of logged output
- Utilities: Add new
SQS batch processing
utility to handle partial failures in processing message batches - Utilities: Add typing utility providing static type for lambda context object
- Utilities: Add
transform=auto
in parameters utility to deserialize parameter values based on the key name
Fixed¶
- Logger: The value of
json_default
formatter is no longer written to logs
[1.4.0] - 2020-08-25¶
Added¶
- All: Official Lambda Layer via Serverless Application Repository
- Tracer:
capture_method
andcapture_lambda_handler
now support capture_response=False parameter to prevent Tracer to capture response as metadata to allow customers running Tracer with sensitive workloads
Fixed¶
- Metrics: Cold start metric is now completely separate from application metrics dimensions, making it easier and cheaper to visualize.
- This is a breaking change if you were graphing/alerting on both application metrics with the same name to compensate this previous malfunctioning
- Marked as bugfix as this is the intended behaviour since the beginning, as you shouldn't have the same application metric with different dimensions
- Utilities: SSMProvider within Parameters utility now have decrypt and recursive parameters correctly defined to support autocompletion
Added¶
- Tracer: capture_lambda_handler and capture_method decorators now support
capture_response
parameter to not include function's response as part of tracing metadata
[1.3.1] - 2020-08-22¶
Fixed¶
- Tracer: capture_method decorator did not properly handle nested context managers
[1.3.0] - 2020-08-21¶
Added¶
- Utilities: Add new
parameters
utility to retrieve a single or multiple parameters from SSM Parameter Store, Secrets Manager, DynamoDB, or your very own
[1.2.0] - 2020-08-20¶
Added¶
- Tracer: capture_method decorator now supports generator functions (including context managers)
[1.1.3] - 2020-08-18¶
Fixed¶
- Logger: Logs emitted twice, structured and unstructured, due to Lambda configuring the root handler
[1.1.2] - 2020-08-16¶
Fixed¶
- Docs: Clarify confusion on Tracer reuse and
auto_patch=False
statement - Logger: Autocomplete for log statements in PyCharm
[1.1.1] - 2020-08-14¶
Fixed¶
- Logger: Regression on
Logger
level not acceptingint
i.e.Logger(level=logging.INFO)
[1.1.0] - 2020-08-14¶
Added¶
- Logger: Support for logger inheritance with
child
parameter
Fixed¶
- Logger: Log level is now case insensitive via params and env var
[1.0.2] - 2020-07-16¶
Fixed¶
- Tracer: Correct AWS X-Ray SDK dependency to support 2.5.0 and higher
[1.0.1] - 2020-07-06¶
Fixed¶
- Logger: Fix a bug with
inject_lambda_context
causing existing Logger keys to be overridden ifstructure_logs
was called before
[1.0.0] - 2020-06-18¶
Added¶
- Metrics:
add_metadata
method to add any metric metadata you'd like to ease finding metric related data via CloudWatch Logs - Set status as General Availability
[0.11.0] - 2020-06-08¶
Added¶
- Imports can now be made from top level of module, e.g.:
from aws_lambda_powertools import Logger, Metrics, Tracer
Fixed¶
- Metrics: Fix a bug with Metrics causing an exception to be thrown when logging metrics if dimensions were not explicitly added.
Changed¶
- Metrics: No longer throws exception by default in case no metrics are emitted when using the log_metrics decorator.
[0.10.0] - 2020-06-08¶
Added¶
- Metrics:
capture_cold_start_metric
parameter added tolog_metrics
decorator - Metrics: Optional
namespace
andservice
parameters added to Metrics constructor to more closely resemble other core utils
Changed¶
- Metrics: Default dimension is now created based on
service
parameter orPOWERTOOLS_SERVICE_NAME
env var
Deprecated¶
- Metrics:
add_namespace
method deprecated in favor of usingnamespace
parameter to Metrics constructor orPOWERTOOLS_METRICS_NAMESPACE
env var
[0.9.5] - 2020-06-02¶
Fixed¶
- Metrics: Coerce non-string dimension values to string
- Logger: Correct
cold_start
,function_memory_size
values from string to bool and int respectively
[0.9.4] - 2020-05-29¶
Fixed¶
- Metrics: Fix issue where metrics were not correctly flushed, and cleared on every invocation
[0.9.3] - 2020-05-16¶
Fixed¶
- Tracer: Fix Runtime Error for nested sync due to incorrect loop usage
[0.9.2] - 2020-05-14¶
Fixed¶
- Tracer: Import aiohttp lazily so it's not a hard dependency
[0.9.0] - 2020-05-12¶
Added¶
- Tracer: Support for async functions in
Tracer
viacapture_method
decorator - Tracer: Support for
aiohttp
viaaiohttp_trace_config
trace config - Tracer: Support for patching specific modules via
patch_modules
param - Tracer: Document escape hatch mechanisms via
tracer.provider
[0.8.1] - 2020-05-1¶
Fixed¶
- Metrics: Fix metric unit casting logic if one passes plain string (value or key)
- Metrics:: Fix
MetricUnit
enum values forBytesPerSecond
KilobytesPerSecond
MegabytesPerSecond
GigabytesPerSecond
TerabytesPerSecond
BitsPerSecond
KilobitsPerSecond
MegabitsPerSecond
GigabitsPerSecond
TerabitsPerSecond
CountPerSecond
[0.8.0] - 2020-04-24¶
Added¶
- Logger: Introduced
Logger
class for structured logging as a replacement forlogger_setup
- Logger: Introduced
Logger.inject_lambda_context
decorator as a replacement forlogger_inject_lambda_context
Removed¶
- Logger: Raise
DeprecationWarning
exception for bothlogger_setup
,logger_inject_lambda_context
[0.7.0] - 2020-04-20¶
Added¶
- Middleware factory: Introduced Middleware Factory to build your own middleware via
lambda_handler_decorator
Fixed¶
- Metrics: Fixed metrics dimensions not being included correctly in EMF
[0.6.3] - 2020-04-09¶
Fixed¶
- Logger: Fix
log_metrics
decorator logic not calling the decorated function, and exception handling
[0.6.1] - 2020-04-08¶
Added¶
- Metrics: Introduces Metrics middleware to utilise CloudWatch Embedded Metric Format
Deprecated¶
- Metrics: Added deprecation warning for
log_metrics
[0.5.0] - 2020-02-20¶
Added¶
- Logger: Introduced log sampling for debug - Thanks to Danilo's contribution
[0.1.0] - 2019-11-15¶
Added¶
- Public beta release
Last update: 2021-02-12