Releases: aws-powertools/powertools-lambda-java
v1.4.0
Changes
Metrics
-
Removed validation of having minimum one dimension to capture metrics. EMF now support Dimension set being empty as well.
-
Now Customers have ability to set default dimension for metrics via
MetricsUtils.defaultDimensionSet()
. This is will be automatically applied to any metrics captured via@Metrics
annotation as well aswithSingleMetric
api calls.
- feat: Default dimensions from powertools instead of emf library (#317) by @pankajagrawal16
This release was made possible by the following contributors:
v1.3.0
Changes
Powertools now works out of the box with code guru profile handler implementation.
Metrics:
-
Module now by default captures AWS Request id as property if used together with
Metrics
annotation. It will also capture Xray Trace ID as property if tracing is enabled. This ensures good observability and tracing. -
withSingleMetric
fromMetricsUtils
can now pick the default namespace specified either onMetrics
annotation or viaPOWERTOOLS_METRICS_NAMESPACE
env var, without need to specify explicitly for each call. -
Metrics
annotation captures metrics even in case of unhandled exception from Lambda function.
Logging:
- Ability to override object mapper used for logging event. This provides customers ability to customize how and what they want to log from event.
📜 Documentation updates
This release also marks our documentation system migration from Gatsby to MKdocs, including navigation improvements to address customers feedback.
- chore: migrate docs from gatsby to mkdocs (#308) by @pankajagrawal16
- chore: consistent field names for trace and req id with logger (#309) by @pankajagrawal16
- fix: powertools specific log level env var to not conflict with the system LOG_LEVEL (#306) by @pankajagrawal16
- docs: ability to override object mapper used for logging event (#303) by @pankajagrawal16
- feat: single metric utility method to pick default namespace (#305) by @pankajagrawal16
- feat: ability to override object mapper used for logging event (#302) by @pankajagrawal16
- feat: respect code guru profile handler implementation (#304) by @pankajagrawal16
- feat: Add
function_request_id
to each EMF log. (#301) by @msailes - fix: Spotbugs issues when using Powertools(#300) @msailes
- feat: capture metrics even when handler results in exception (#286) by @pankajagrawal16
- fix(example): Update the example to v1.2.0 (#288) by @michaelbrewer
This release was made possible by the following contributors:
v1.2.0
Changes
- Now you can change the default mode of @Tracing annotation via environment variables. Previously, default behavior of annotation was to capture both response and error from the method calls. With this release, users can configure this default behavior via environment variables. Existing attributes captureResponse and captureError are deprecated in favor of captureMode attribute on @Tracing annotation. Ref issue #231 for more details.
- Users can also define custom segment names on @Tracing annotation. Kudos to @Skipua for contribution
- feat: support for env variable in tracing capture modes (#249) by @pankajagrawal16
- feat: custom segment names (#221) by @Skipua
- ci: add JDK 15 to build matrix (#210) by @sullis
- ci: add .github/workflows to CI build.yml (#211) by @sullis
- refactor: replace Apache Commons Logging with SLF4J (#212) by @sullis
- build(deps): bump software.amazon.awssdk:bom from 2.15.38 to 2.15.39 (#207) by @dependabot
📜 Documentation updates
- docs: shadow sidebar to remain expanded (#208) by @heitorlessa
This release was made possible by the following contributors:
@Skipua, @heitorlessa, @pankajagrawal16 and @sullis
v1.1.0
Changes
- Annotation support for fetching keys and secrets from your favorite store. You can make use of the annotation @param to inject a parameter value in a variable.
By default it will use SSMProvider
to retrieve the value from AWS System Manager Parameter Store.
You can always create your own provider based on where your keys or secrets are stored by extending BaseProvider
and/or a Transformer
.
- Not directly related to this release, but now you can use preconfigured templates with lambda powertools core utilities pre configured. You can use it to initialize AWS SAM projects.
- doc: add reference to cookiecutter-aws-sam-powertools-java (#204) by @vitodegiosa
- feat: Parameters injection via annotations (#201) by @vitodegiosa
📜 Documentation updates
- docs: add source code link in nav bar (#199) by @heitorlessa
This release was made possible by the following contributors:
v1.0.1
Changes
This release adds some performance improvement to parameters utility when fetching params using default SSM/Secret manager client.
Docs are also updated with official blog link and also fixes broken links to github.
- docs: fix broken links and add blog link (#197) by @pankajagrawal16
- chore: upgrade AspectjGradlePlugin to latest and example project to java 11 (#189) by @pankajagrawal16
- perf: Make UrlConnectionHttpClient default client for params fetch (#185) by @pankajagrawal16
This release was made possible by the following contributors:
v1.0.0
Changes
With this release, we move from beta to General Availability 🎉🎉🎉!
Quick links: 📜Documentation | Maven | Feature request | Bug Report | Detailed blog post
Tracing
Provides a simple way to send traces from functions to AWS X-Ray. It provides visibility into function calls, interactions with other AWS services, or external HTTP requests. You can add annotations to traces to allow filtering based on key information. For example, when using @Tracing, it creates a ColdStart annotation for you. You can easily group and analyze traces where there was an initialization overhead.
Logging
Based on log4j2, outputs structured JSON. It allows you to pass in strings, or more complex objects, and takes care of serializing the log output. Common use cases—such as logging the Lambda event payload and capturing cold start information—are handled for you. You can also include your own custom keys to the logger at any time.
Metrics
Makes collecting custom metrics from your application simple, without the need to make synchronous requests to external systems. This functionality, which is powered by Amazon CloudWatch Embedded Metric Format (EMF), allows for capturing metrics asynchronously. Again, convenient functionality provides for common cases, such as validating metrics against CloudWatch EMF specification and tracking cold starts.
Helper utilities
Utilities removes most of the heavy lifting that customers have to do across a wide range of use cases. New utilities get added based on community feedback. If you have an idea, feel free to open an RFC. Some of the utilities already made available as part of GA:
Sample projects using Powertools Java
🧐What's New for Beta customers
If you've been following the Beta, GA version is released with all the functionalities in our latest beta release v0.6.0-beta
Breaking changes from v0.6.0-beta to GA:
We have renamed some of the annotations to make it more concise and consistent in usage. Refer this issue for more details.
Beta | GA |
---|---|
PowertoolsTracing | Tracing |
PowertoolsLogging | Logging |
PowertoolsMetrics | Metrics |
LargeMessageHandler | SqsLargeMessage |
SqsBatchProcessor | SqsBatch |
All the functionality remains the same. So for beta customers, it should be just about fixing to correct imports.
Preview release v0.6.0-beta
Changes
Validation utility
This utility provides JSON Schema validation for payloads held within events and response used in AWS Lambda.
Key features include:
- Validate incoming events and responses
- Native support for the most common AWS Lambda event sources (API Gateway, SNS, SQS, ...)
- JMESPath support validate only a sub part of the event
Use our annotation to get started straight away.
For more control, use the utility directly.
- module validation (#138) by @jeromevdl
🐛 Bug and hot fixes
- chore: gradle example (#147) by @pankajagrawal16
- feat: log aws request id (#133) by @pankajagrawal16
- docs: Update all the environment variables used (#127) by @pankajagrawal16
- improv: tweak README.md (#128) by @bmicklea
This release was made possible by the following contributors:
@bmicklea, @dependabot, @dependabot[bot], @jeromevdl, @msailes and @pankajagrawal16
Preview release v0.5.0-beta
Changes
SQS batch processing utility
Add a new utility to handle partial failures when processing batches of SQS messages in Lambda. The default behavior with Lambda - SQS is to return all messages to the queue when there is a failure during processing. This utility provides functionality to handle failures individually at the message level, and avoid re-processing messages.
🐛 Bug and hot fixes
- fix: Make slf4j work along with log4j2 (#123) by @pankajagrawal16
This release was made possible by the following contributors:
Preview release v0.4.0-beta
Changes
Add a new utility to fetch and cache parameter values from AWS Systems Manager Parameter Store, AWS Secrets Manager. It also provides a base class to create your parameter provider implementation.
Retrieve values from Systems Manager Parameter Store:
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input,
Context context) {
SSMProvider ssmProvider = ParamManager.getSsmProvider();
// Retrieve a single parameter
String value = ssmProvider.getValue("/my/parameter");
// Retrieve multiple parameters from a path prefix recursively
// This returns a map with the parameter name as key
Map<String, String> multipleValue = ssmProvider.getMultiple("/my/path/prefix");
}
Retrieve secrets from AWS Secrets Managers:
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input,
Context context) {
SecretsProvider secretsProvider = ParamManager.getSecretsProvider();
// Retrieve a single secret
String secretValue = secretsProvider.get("my-secret");
}
🌟 Minor Changes
- feat: integration with CloudWatch ServiceLens #88 (#111) by @rb2010
- fix: Log event via object mapper and not depend on toString (#113) by @pankajagrawal16
This release was made possible by the following contributors:
Preview release v0.3.1-beta
Changes
This release fixes import of unused dependencies for tracing utility.
- fix: Removing Log4J dependencies from the tracing module. (#106) by @msailes
- fix: Removing v1 Java SDK dependencies for X-Ray (#105) by @msailes
- docs: fixes to the documentation (#102) by @msailes
This release was made possible by the following contributors:
@dependabot, and @msailes