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 (
developbranch) - 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_urlparameter, including docs - Internal: Include
make prin 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
operationNamewithin 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-metadatain 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_fetchparam 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_contextdecorator andset_correlation_idmethod - Logger: Include new
exception_namekey 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_progresserrors
[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
SnsModeltypo in parser. - Utilities:
typing_extensionspackage is now only installed in Python < 3.8
[1.10.1] - 2021-01-19¶
Fixed¶
- Utilities: Added
SnsSqsEnvelopeinparserto 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
extraparameter 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_methoddecorator can cause function responses to be read and serialized. - Utilities: Added equality to ease testing Event source data classes
- Package: Added
py.typedfor 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
ParserandEvent 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
Parserutility 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
Validatorutility to validate inbound events and responses using JSON Schema - Utilities: Add new
Event source data classesutility to easily describe event schema of popular event sources - Docs: Add new
Testing your codesection 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_idto log output to improve integration with CloudWatch Service Lens - Logger: Allow reordering of logged output
- Utilities: Add new
SQS batch processingutility to handle partial failures in processing message batches - Utilities: Add typing utility providing static type for lambda context object
- Utilities: Add
transform=autoin parameters utility to deserialize parameter values based on the key name
Fixed¶
- Logger: The value of
json_defaultformatter is no longer written to logs
[1.4.0] - 2020-08-25¶
Added¶
- All: Official Lambda Layer via Serverless Application Repository
- Tracer:
capture_methodandcapture_lambda_handlernow 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_responseparameter 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
parametersutility 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=Falsestatement - Logger: Autocomplete for log statements in PyCharm
[1.1.1] - 2020-08-14¶
Fixed¶
- Logger: Regression on
Loggerlevel not acceptinginti.e.Logger(level=logging.INFO)
[1.1.0] - 2020-08-14¶
Added¶
- Logger: Support for logger inheritance with
childparameter
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_contextcausing existing Logger keys to be overridden ifstructure_logswas called before
[1.0.0] - 2020-06-18¶
Added¶
- Metrics:
add_metadatamethod 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_metricparameter added tolog_metricsdecorator - Metrics: Optional
namespaceandserviceparameters added to Metrics constructor to more closely resemble other core utils
Changed¶
- Metrics: Default dimension is now created based on
serviceparameter orPOWERTOOLS_SERVICE_NAMEenv var
Deprecated¶
- Metrics:
add_namespacemethod deprecated in favor of usingnamespaceparameter to Metrics constructor orPOWERTOOLS_METRICS_NAMESPACEenv var
[0.9.5] - 2020-06-02¶
Fixed¶
- Metrics: Coerce non-string dimension values to string
- Logger: Correct
cold_start,function_memory_sizevalues 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
Tracerviacapture_methoddecorator - Tracer: Support for
aiohttpviaaiohttp_trace_configtrace config - Tracer: Support for patching specific modules via
patch_modulesparam - 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
MetricUnitenum values forBytesPerSecondKilobytesPerSecondMegabytesPerSecondGigabytesPerSecondTerabytesPerSecondBitsPerSecondKilobitsPerSecondMegabitsPerSecondGigabitsPerSecondTerabitsPerSecondCountPerSecond
[0.8.0] - 2020-04-24¶
Added¶
- Logger: Introduced
Loggerclass for structured logging as a replacement forlogger_setup - Logger: Introduced
Logger.inject_lambda_contextdecorator as a replacement forlogger_inject_lambda_context
Removed¶
- Logger: Raise
DeprecationWarningexception 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_metricsdecorator 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