|
2 | 2 | import typing
|
3 | 3 | from typing import Any, Callable, Dict, Optional, Type, overload
|
4 | 4 |
|
5 |
| -from pydantic import TypeAdapter |
| 5 | +from pydantic import TypeAdapter, ValidationError |
6 | 6 |
|
7 | 7 | from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
|
8 | 8 | from aws_lambda_powertools.utilities.parser.envelopes.base import Envelope
|
@@ -95,13 +95,16 @@ def handler(event: Order, context: LambdaContext):
|
95 | 95 | "or as the type hint of `event` in the handler that it wraps",
|
96 | 96 | )
|
97 | 97 |
|
98 |
| - if envelope: |
99 |
| - parsed_event = parse(event=event, model=model, envelope=envelope) |
100 |
| - else: |
101 |
| - parsed_event = parse(event=event, model=model) |
| 98 | + try: |
| 99 | + if envelope: |
| 100 | + parsed_event = parse(event=event, model=model, envelope=envelope) |
| 101 | + else: |
| 102 | + parsed_event = parse(event=event, model=model) |
102 | 103 |
|
103 |
| - logger.debug(f"Calling handler {handler.__name__}") |
104 |
| - return handler(parsed_event, context, **kwargs) |
| 104 | + logger.debug(f"Calling handler {handler.__name__}") |
| 105 | + return handler(parsed_event, context, **kwargs) |
| 106 | + except (ValidationError, AttributeError) as exc: |
| 107 | + raise InvalidModelTypeError(f"Error: {str(exc)}. Please ensure the type you're trying to parse into is correct") |
105 | 108 |
|
106 | 109 |
|
107 | 110 | @overload
|
@@ -186,7 +189,7 @@ def handler(event: Order, context: LambdaContext):
|
186 | 189 |
|
187 | 190 | return adapter.validate_python(event)
|
188 | 191 |
|
189 |
| - except AttributeError as exc: |
| 192 | + except Exception as exc: |
190 | 193 | raise InvalidModelTypeError(
|
191 | 194 | f"Error: {str(exc)}. Please ensure the Input model inherits from BaseModel,\n"
|
192 | 195 | "and your payload adheres to the specified Input model structure.\n"
|
|
0 commit comments