Module aws_lambda_powertools.utilities.jmespath_utils
Sub-modules
aws_lambda_powertools.utilities.jmespath_utils.envelopes
Functions
def extract_data_from_envelope(data: Union[Dict, str], envelope: str, jmespath_options: Optional[Dict] = None) ‑> Any
-
Searches and extracts data using JMESPath
Envelope being the JMESPath expression to extract the data you're after
Built-in JMESPath functions include: powertools_json, powertools_base64, powertools_base64_gzip
Examples
Deserialize JSON string and extracts data from body key
from aws_lambda_powertools.utilities.jmespath_utils import extract_data_from_envelope from aws_lambda_powertools.utilities.typing import LambdaContext def handler(event: dict, context: LambdaContext): # event = {"body": "{"customerId":"dd4649e6-2484-4993-acb8-0f9123103394"}"} # noqa: ERA001 payload = extract_data_from_envelope(data=event, envelope="powertools_json(body)") customer = payload.get("customerId") # now deserialized ...
Parameters
data
:Dict
- Data set to be filtered
envelope
:str
- JMESPath expression to filter data against
jmespath_options
:Dict
- Alternative JMESPath options to be included when filtering expr
Returns
Any
- Data found using JMESPath expression given in envelope
Classes
class PowertoolsFunctions
-
Expand source code
class PowertoolsFunctions(Functions): @signature({"types": ["string"]}) def _func_powertools_json(self, value): return json.loads(value) @signature({"types": ["string"]}) def _func_powertools_base64(self, value): return base64.b64decode(value).decode() @signature({"types": ["string"]}) def _func_powertools_base64_gzip(self, value): encoded = base64.b64decode(value) uncompressed = gzip.decompress(encoded) return uncompressed.decode()
Ancestors
- jmespath.functions.Functions
Class variables
var FUNCTION_TABLE