Skip to content

Feature request: Improve error message when parser fails #3580

Closed
@Mavtti

Description

@Mavtti

Expected Behaviour

I would expect it to work out of the box

Current Behaviour

I've wrapped my function with event_parser for a kinesis input. For some records and not all, I get the following error:

[ERROR] InvalidEnvelopeError: Envelope must implement BaseEnvelope, envelope=<class 'aws_lambda_powertools.utilities.parser.envelopes.kinesis.KinesisDataStreamEnvelope'>
Traceback (most recent call last):
  File "/var/task/aws_lambda_powertools/middleware_factory/factory.py", line 135, in wrapper
    response = middleware()
  File "/var/task/aws_lambda_powertools/utilities/parser/parser.py", line 98, in event_parser
    parsed_event = parse(event=event, model=model, envelope=envelope)
  File "/var/task/aws_lambda_powertools/utilities/parser/parser.py", line 175, in parse
    raise InvalidEnvelopeError(f"Envelope must implement BaseEnvelope, envelope={envelope}")

I've tested to manually call KinesisDataStreamEnvelope.parse and it works fine.

Strange thing, it doesn't happen for every lambda invocation.

Thx

Code snippet

from aws_lambda_powertools.utilities.parser import envelopes
from aws_lambda_powertools.utilities.parser import event_parser
from aws_lambda_powertools.utilities.typing import LambdaContext


@event_parser(
    model=SuggestionPayload,
    envelope=envelopes.KinesisDataStreamEnvelope,
)
def lambda_handler(document_events: list[SuggestionPayload], _: LambdaContext):

Possible Solution

No response

Steps to Reproduce

Lambda with Kinesis data stream connector and the previous code snippet.
Lambda is in a Docker format and not zip.

Powertools for AWS Lambda (Python) version

latest

AWS Lambda function runtime

3.10

Packaging format used

PyPi

Debugging logs

No debug logs before this error

Metadata

Metadata

Assignees

No one assigned

    Labels

    parserParser (Pydantic) utility

    Type

    No type

    Projects

    Status

    Shipped

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions