Skip to content

Commit dc88e7e

Browse files
author
Ran Isenberg
committed
feature: Kafka Parser support
1 parent e3aa284 commit dc88e7e

File tree

4 files changed

+11
-0
lines changed

4 files changed

+11
-0
lines changed

aws_lambda_powertools/utilities/parser/envelopes/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .cloudwatch import CloudWatchLogsEnvelope
55
from .dynamodb import DynamoDBStreamEnvelope
66
from .event_bridge import EventBridgeEnvelope
7+
from .kafka import KafkaEnvelope
78
from .kinesis import KinesisDataStreamEnvelope
89
from .lambda_function_url import LambdaFunctionUrlEnvelope
910
from .sns import SnsEnvelope, SnsSqsEnvelope
@@ -20,5 +21,6 @@
2021
"SnsEnvelope",
2122
"SnsSqsEnvelope",
2223
"SqsEnvelope",
24+
"KafkaEnvelope",
2325
"BaseEnvelope",
2426
]

aws_lambda_powertools/utilities/parser/models/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from .cloudwatch import CloudWatchLogsData, CloudWatchLogsDecode, CloudWatchLogsLogEvent, CloudWatchLogsModel
1818
from .dynamodb import DynamoDBStreamChangedRecordModel, DynamoDBStreamModel, DynamoDBStreamRecordModel
1919
from .event_bridge import EventBridgeModel
20+
from .kafka import KafkaEventModel, KafkaRecordModel
2021
from .kinesis import KinesisDataStreamModel, KinesisDataStreamRecord, KinesisDataStreamRecordPayload
2122
from .lambda_function_url import LambdaFunctionUrlModel
2223
from .s3 import S3Model, S3RecordModel
@@ -98,4 +99,6 @@
9899
"APIGatewayEventRequestContext",
99100
"APIGatewayEventAuthorizer",
100101
"APIGatewayEventIdentity",
102+
"KafkaEventModel",
103+
"KafkaRecordModel",
101104
]

docs/utilities/parser.md

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ Parser comes with the following built-in models:
168168
| **APIGatewayProxyEventModel** | Lambda Event Source payload for Amazon API Gateway |
169169
| **APIGatewayProxyEventV2Model** | Lambda Event Source payload for Amazon API Gateway v2 payload |
170170
| **LambdaFunctionUrlModel** | Lambda Event Source payload for Lambda Function URL payload |
171+
| **KafkaModel** | Lambda Event Source payload for self managed Kafka payload |
171172

172173
### extending built-in models
173174

@@ -308,6 +309,7 @@ Parser comes with the following built-in envelopes, where `Model` in the return
308309
| **ApiGatewayEnvelope** | 1. Parses data using `APIGatewayProxyEventModel`. <br/> 2. Parses `body` key using your model and returns it. | `Model` |
309310
| **ApiGatewayV2Envelope** | 1. Parses data using `APIGatewayProxyEventV2Model`. <br/> 2. Parses `body` key using your model and returns it. | `Model` |
310311
| **LambdaFunctionUrlEnvelope** | 1. Parses data using `LambdaFunctionUrlModel`. <br/> 2. Parses `body` key using your model and returns it. | `Model` |
312+
| **KafkaEnvelope** | 1. Parses data using `KafkaRecordModel`. <br/> 2. Parses `value` key using your model and returns it. | `Model` |
311313

312314
### Bringing your own envelope
313315

tests/functional/parser/schemas.py

+4
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,7 @@ class MyApiGatewayBusiness(BaseModel):
9191
class MyALambdaFuncUrlBusiness(BaseModel):
9292
message: str
9393
username: str
94+
95+
96+
class MyALambdaKafkaBusiness(BaseModel):
97+
key: str

0 commit comments

Comments
 (0)