@@ -32,13 +32,13 @@ For example, if your Lambda function is being triggered by an API Gateway proxy
32
32
```python hl_lines="1 4"
33
33
from aws_lambda_powertools.utilities.data_classes import APIGatewayProxyEvent
34
34
35
- def lambda_handler(event, context):
35
+ def lambda_handler(event: dict , context):
36
36
event = APIGatewayProxyEvent(event)
37
37
if 'helloworld' in event.path and event.http_method == 'GET':
38
38
do_something_with(event.body, user)
39
39
```
40
40
41
- === "app_using_decorator .py"
41
+ === "app .py using event_source decorator "
42
42
43
43
```python hl_lines="1 3"
44
44
from aws_lambda_powertools.utilities.data_classes import event_source, APIGatewayProxyEvent
@@ -60,7 +60,8 @@ For example, if your Lambda function is being triggered by an API Gateway proxy
60
60
Event Source | Data_class
61
61
------------------------------------------------- | ---------------------------------------------------------------------------------
62
62
[ API Gateway Proxy] ( #api-gateway-proxy ) | ` APIGatewayProxyEvent `
63
- [ API Gateway Proxy event v2] ( #api-gateway-proxy-v2 ) | ` APIGatewayProxyEventV2 `
63
+ [ API Gateway Proxy V2] ( #api-gateway-proxy-v2 ) | ` APIGatewayProxyEventV2 `
64
+ [ Application Load Balancer] ( #application-load-balancer ) | ` ALBEvent `
64
65
[ AppSync Resolver] ( #appsync-resolver ) | ` AppSyncResolverEvent `
65
66
[ CloudWatch Logs] ( #cloudwatch-logs ) | ` CloudWatchLogsEvent `
66
67
[ CodePipeline Job Event] ( #codepipeline-job ) | ` CodePipelineJobEvent `
@@ -100,7 +101,9 @@ def lambda_handler(event: APIGatewayProxyEvent, context):
100
101
do_something_with(event.json_body, user)
101
102
```
102
103
103
- ### API Gateway Proxy v2
104
+ ### API Gateway Proxy V2
105
+
106
+ It is used for HTTP API using v2 proxy event.
104
107
105
108
=== "app.py"
106
109
@@ -113,6 +116,21 @@ def lambda_handler(event: APIGatewayProxyEventV2, context):
113
116
do_something_with(event.json_body, event.query_string_parameters)
114
117
```
115
118
119
+ ### Application Load Balancer
120
+
121
+ Is it used for Application load balancer event.
122
+
123
+ === "app.py"
124
+
125
+ ``` python
126
+ from aws_lambda_powertools.utilities.data_classes import event_source, ALBEvent
127
+
128
+ @event_source (data_class = ALBEvent)
129
+ def lambda_handler (event : ALBEvent, context ):
130
+ if " helloworld" in event.path and event.http_method == " POST" :
131
+ do_something_with(event.json_body, event.query_string_parameters)
132
+ ```
133
+
116
134
### AppSync Resolver
117
135
118
136
> New in 1.12.0
@@ -478,10 +496,11 @@ This example is based on the AWS Cognito docs for [Create Auth Challenge Lambda
478
496
=== "app.py"
479
497
480
498
``` python
499
+ from aws_lambda_powertools.utilities.data_classes import event_source
481
500
from aws_lambda_powertools.utilities.data_classes.cognito_user_pool_event import CreateAuthChallengeTriggerEvent
482
501
483
- def handler ( event : dict , context ) -> dict :
484
- event: CreateAuthChallengeTriggerEvent = CreateAuthChallengeTriggerEvent(event)
502
+ @event_source ( data_class = CreateAuthChallengeTriggerEvent)
503
+ def handler ( event : CreateAuthChallengeTriggerEvent, context ) -> dict :
485
504
if event.request.challenge_name == " CUSTOM_CHALLENGE" :
486
505
event.response.public_challenge_parameters = {" captchaUrl" : " url/123.jpg" }
487
506
event.response.private_challenge_parameters = {" answer" : " 5" }
@@ -496,10 +515,11 @@ This example is based on the AWS Cognito docs for [Verify Auth Challenge Respons
496
515
=== "app.py"
497
516
498
517
``` python
518
+ from aws_lambda_powertools.utilities.data_classes import event_source
499
519
from aws_lambda_powertools.utilities.data_classes.cognito_user_pool_event import VerifyAuthChallengeResponseTriggerEvent
500
520
501
- def handler ( event : dict , context ) -> dict :
502
- event: VerifyAuthChallengeResponseTriggerEvent = VerifyAuthChallengeResponseTriggerEvent(event)
521
+ @event_source ( data_class = VerifyAuthChallengeResponseTriggerEvent)
522
+ def handler ( event : VerifyAuthChallengeResponseTriggerEvent, context ) -> dict :
503
523
event.response.answer_correct = (
504
524
event.request.private_challenge_parameters.get(" answer" ) == event.request.challenge_answer
505
525
)
@@ -594,17 +614,17 @@ def lambda_handler(event: KinesisStreamEvent, context):
594
614
595
615
``` python
596
616
from urllib.parse import unquote_plus
597
- from aws_lambda_powertools.utilities.data_classes import S3Event
617
+ from aws_lambda_powertools.utilities.data_classes import event_source, S3Event
598
618
599
- def lambda_handler ( event , context ):
600
- event: S3Event = S3Event(event)
619
+ @event_source ( data_class = S3Event)
620
+ def lambda_handler ( event : S3Event, context ):
601
621
bucket_name = event.bucket_name
602
622
603
623
# Multiple records can be delivered in a single event
604
624
for record in event.records:
605
625
object_key = unquote_plus(record.s3.get_object.key)
606
626
607
- do_something_with(f ' { bucket_name} / { object_key} ' )
627
+ do_something_with(f " { bucket_name} / { object_key} " )
608
628
```
609
629
610
630
### S3 Object Lambda
0 commit comments