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