feat(jmespath): add powertools functions #2264
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of your changes
This PR is a follow up to #2259 and introduces a series of custom functions to the JMESPath utility which will allow customer to work with complex data types like JSON, base64, and gzip encoded fields.
These function match 1:1 the ones available in Powertools for AWS Lambda (Python) and are one of the key differentiator of the Powertools JMESPath utility versus other JMESPath libraries available on npm.
At the moment we support the following functions:
powertools_json
powertools_base64
powertools_base64_gzip
Customers will be able to use them with AWS as well as own events. For example, when processing an event coming from API Gateway the
body
field will be JSON stringified and might be also base64-encoded.Taking an example event like:
Without these functions the customer would be able to only use expressions like
search(event, 'body')
, but would have to handle the actual content of the body on their own.With these functions they will be able to do things like
search(event, 'powertools_json(body).foo')
to select fields within the parsed body.Related issues, RFCs
Issue number: #2207
Checklist
Breaking change checklist
Is it a breaking change?: NO
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.