@@ -693,27 +693,22 @@ Inheritance is importance because we need to access message IDs and sequence num
693
693
694
694
=== "SQS"
695
695
696
- ```python hl_lines="5 13 22 28 "
696
+ ```python hl_lines="5 14 23 29 "
697
697
import json
698
698
699
699
from aws_lambda_powertools import Logger, Tracer
700
700
from aws_lambda_powertools.utilities.batch import BatchProcessor, EventType, process_partial_response
701
701
from aws_lambda_powertools.utilities.parser.models import SqsRecordModel
702
702
from aws_lambda_powertools.utilities.typing import LambdaContext
703
- from aws_lambda_powertools.utilities.parser import validator, BaseModel
703
+ from aws_lambda_powertools.utilities.parser import BaseModel
704
+ from aws_lambda_powertools.utilities.parser.types import Json
704
705
705
706
706
707
class Order(BaseModel):
707
708
item: dict
708
709
709
710
class OrderSqsRecord(SqsRecordModel):
710
- body: Order
711
-
712
- # auto transform json string
713
- # so Pydantic can auto-initialize nested Order model
714
- @validator("body", pre=True)
715
- def transform_body_to_dict(cls, value: str):
716
- return json.loads(value)
711
+ body: Json[Order] # deserialize order data from JSON string
717
712
718
713
processor = BatchProcessor(event_type=EventType.SQS, model=OrderSqsRecord)
719
714
tracer = Tracer()
@@ -732,13 +727,14 @@ Inheritance is importance because we need to access message IDs and sequence num
732
727
733
728
=== "Kinesis Data Streams"
734
729
735
- ```python hl_lines="5 14 25 29 35 "
730
+ ```python hl_lines="5 15 19 23 29 36 "
736
731
import json
737
732
738
733
from aws_lambda_powertools import Logger, Tracer
739
734
from aws_lambda_powertools.utilities.batch import BatchProcessor, EventType, process_partial_response
740
735
from aws_lambda_powertools.utilities.parser.models import KinesisDataStreamRecordPayload, KinesisDataStreamRecord
741
736
from aws_lambda_powertools.utilities.parser import BaseModel, validator
737
+ from aws_lambda_powertools.utilities.parser.types import Json
742
738
from aws_lambda_powertools.utilities.typing import LambdaContext
743
739
744
740
@@ -747,14 +743,7 @@ Inheritance is importance because we need to access message IDs and sequence num
747
743
748
744
749
745
class OrderKinesisPayloadRecord(KinesisDataStreamRecordPayload):
750
- data: Order
751
-
752
- # auto transform json string
753
- # so Pydantic can auto-initialize nested Order model
754
- @validator("data", pre=True)
755
- def transform_message_to_dict(cls, value: str):
756
- # Powertools KinesisDataStreamRecord already decodes b64 to str here
757
- return json.loads(value)
746
+ data: Json[Order]
758
747
759
748
760
749
class OrderKinesisRecord(KinesisDataStreamRecord):
0 commit comments