aws-lambda-powertools 3.8.1a6__py3-none-any.whl → 3.8.1a7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aws_lambda_powertools/metrics/provider/datadog/datadog.py +4 -1
- aws_lambda_powertools/shared/version.py +1 -1
- aws_lambda_powertools/utilities/data_classes/__init__.py +2 -0
- aws_lambda_powertools/utilities/data_classes/alb_event.py +2 -6
- aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +2 -2
- aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +12 -21
- aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +128 -0
- aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +7 -7
- aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +2 -4
- aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +109 -115
- aws_lambda_powertools/utilities/data_classes/common.py +46 -47
- aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +7 -11
- aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +6 -6
- aws_lambda_powertools/utilities/data_classes/s3_event.py +20 -20
- aws_lambda_powertools/utilities/data_classes/ses_event.py +3 -3
- aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +2 -10
- {aws_lambda_powertools-3.8.1a6.dist-info → aws_lambda_powertools-3.8.1a7.dist-info}/METADATA +2 -2
- {aws_lambda_powertools-3.8.1a6.dist-info → aws_lambda_powertools-3.8.1a7.dist-info}/RECORD +20 -19
- {aws_lambda_powertools-3.8.1a6.dist-info → aws_lambda_powertools-3.8.1a7.dist-info}/LICENSE +0 -0
- {aws_lambda_powertools-3.8.1a6.dist-info → aws_lambda_powertools-3.8.1a7.dist-info}/WHEEL +0 -0
@@ -205,7 +205,6 @@ class BaseProxyEvent(DictWrapper):
|
|
205
205
|
"""Parses the submitted body as json"""
|
206
206
|
if self.decoded_body:
|
207
207
|
return self._json_deserializer(self.decoded_body)
|
208
|
-
|
209
208
|
return None
|
210
209
|
|
211
210
|
@cached_property
|
@@ -370,81 +369,81 @@ class RequestContextClientCert(DictWrapper):
|
|
370
369
|
class APIGatewayEventIdentity(DictWrapper):
|
371
370
|
@property
|
372
371
|
def access_key(self) -> str | None:
|
373
|
-
return self
|
372
|
+
return self.get("accessKey")
|
374
373
|
|
375
374
|
@property
|
376
375
|
def account_id(self) -> str | None:
|
377
376
|
"""The AWS account ID associated with the request."""
|
378
|
-
return self
|
377
|
+
return self.get("accountId")
|
379
378
|
|
380
379
|
@property
|
381
380
|
def api_key(self) -> str | None:
|
382
381
|
"""For API methods that require an API key, this variable is the API key associated with the method request.
|
383
382
|
For methods that don't require an API key, this variable is null."""
|
384
|
-
return self
|
383
|
+
return self.get("apiKey")
|
385
384
|
|
386
385
|
@property
|
387
386
|
def api_key_id(self) -> str | None:
|
388
387
|
"""The API key ID associated with an API request that requires an API key."""
|
389
|
-
return self
|
388
|
+
return self.get("apiKeyId")
|
390
389
|
|
391
390
|
@property
|
392
391
|
def caller(self) -> str | None:
|
393
392
|
"""The principal identifier of the caller making the request."""
|
394
|
-
return self
|
393
|
+
return self.get("caller")
|
395
394
|
|
396
395
|
@property
|
397
396
|
def cognito_authentication_provider(self) -> str | None:
|
398
397
|
"""A comma-separated list of the Amazon Cognito authentication providers used by the caller
|
399
398
|
making the request. Available only if the request was signed with Amazon Cognito credentials."""
|
400
|
-
return self
|
399
|
+
return self.get("cognitoAuthenticationProvider")
|
401
400
|
|
402
401
|
@property
|
403
402
|
def cognito_authentication_type(self) -> str | None:
|
404
403
|
"""The Amazon Cognito authentication type of the caller making the request.
|
405
404
|
Available only if the request was signed with Amazon Cognito credentials."""
|
406
|
-
return self
|
405
|
+
return self.get("cognitoAuthenticationType")
|
407
406
|
|
408
407
|
@property
|
409
408
|
def cognito_identity_id(self) -> str | None:
|
410
409
|
"""The Amazon Cognito identity ID of the caller making the request.
|
411
410
|
Available only if the request was signed with Amazon Cognito credentials."""
|
412
|
-
return self
|
411
|
+
return self.get("cognitoIdentityId")
|
413
412
|
|
414
413
|
@property
|
415
414
|
def cognito_identity_pool_id(self) -> str | None:
|
416
415
|
"""The Amazon Cognito identity pool ID of the caller making the request.
|
417
416
|
Available only if the request was signed with Amazon Cognito credentials."""
|
418
|
-
return self
|
417
|
+
return self.get("cognitoIdentityPoolId")
|
419
418
|
|
420
419
|
@property
|
421
420
|
def principal_org_id(self) -> str | None:
|
422
421
|
"""The AWS organization ID."""
|
423
|
-
return self
|
422
|
+
return self.get("principalOrgId")
|
424
423
|
|
425
424
|
@property
|
426
425
|
def source_ip(self) -> str:
|
427
426
|
"""The source IP address of the TCP connection making the request to API Gateway."""
|
428
|
-
return self["
|
427
|
+
return self["sourceIp"]
|
429
428
|
|
430
429
|
@property
|
431
430
|
def user(self) -> str | None:
|
432
431
|
"""The principal identifier of the user making the request."""
|
433
|
-
return self
|
432
|
+
return self.get("user")
|
434
433
|
|
435
434
|
@property
|
436
435
|
def user_agent(self) -> str | None:
|
437
436
|
"""The User Agent of the API caller."""
|
438
|
-
return self
|
437
|
+
return self.get("userAgent")
|
439
438
|
|
440
439
|
@property
|
441
440
|
def user_arn(self) -> str | None:
|
442
441
|
"""The Amazon Resource Name (ARN) of the effective user identified after authentication."""
|
443
|
-
return self
|
442
|
+
return self.get("userArn")
|
444
443
|
|
445
444
|
@property
|
446
445
|
def client_cert(self) -> RequestContextClientCert | None:
|
447
|
-
client_cert = self
|
446
|
+
client_cert = self.get("clientCert")
|
448
447
|
return None if client_cert is None else RequestContextClientCert(client_cert)
|
449
448
|
|
450
449
|
|
@@ -452,153 +451,153 @@ class BaseRequestContext(DictWrapper):
|
|
452
451
|
@property
|
453
452
|
def account_id(self) -> str:
|
454
453
|
"""The AWS account ID associated with the request."""
|
455
|
-
return self["
|
454
|
+
return self["accountId"]
|
456
455
|
|
457
456
|
@property
|
458
457
|
def api_id(self) -> str:
|
459
458
|
"""The identifier API Gateway assigns to your API."""
|
460
|
-
return self["
|
459
|
+
return self["apiId"]
|
461
460
|
|
462
461
|
@property
|
463
462
|
def domain_name(self) -> str | None:
|
464
463
|
"""A domain name"""
|
465
|
-
return self
|
464
|
+
return self.get("domainName")
|
466
465
|
|
467
466
|
@property
|
468
467
|
def domain_prefix(self) -> str | None:
|
469
|
-
return self
|
468
|
+
return self.get("domainPrefix")
|
470
469
|
|
471
470
|
@property
|
472
471
|
def extended_request_id(self) -> str | None:
|
473
472
|
"""An automatically generated ID for the API call, which contains more useful information
|
474
473
|
for debugging/troubleshooting."""
|
475
|
-
return self
|
474
|
+
return self.get("extendedRequestId")
|
476
475
|
|
477
476
|
@property
|
478
477
|
def protocol(self) -> str:
|
479
478
|
"""The request protocol, for example, HTTP/1.1."""
|
480
|
-
return self["
|
479
|
+
return self["protocol"]
|
481
480
|
|
482
481
|
@property
|
483
482
|
def http_method(self) -> str:
|
484
483
|
"""The HTTP method used. Valid values include: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT."""
|
485
|
-
return self["
|
484
|
+
return self["httpMethod"]
|
486
485
|
|
487
486
|
@property
|
488
487
|
def identity(self) -> APIGatewayEventIdentity:
|
489
|
-
return APIGatewayEventIdentity(self
|
488
|
+
return APIGatewayEventIdentity(self["identity"])
|
490
489
|
|
491
490
|
@property
|
492
491
|
def path(self) -> str:
|
493
|
-
return self["
|
492
|
+
return self["path"]
|
494
493
|
|
495
494
|
@property
|
496
495
|
def stage(self) -> str:
|
497
496
|
"""The deployment stage of the API request"""
|
498
|
-
return self["
|
497
|
+
return self["stage"]
|
499
498
|
|
500
499
|
@property
|
501
500
|
def request_id(self) -> str:
|
502
501
|
"""The ID that API Gateway assigns to the API request."""
|
503
|
-
return self["
|
502
|
+
return self["requestId"]
|
504
503
|
|
505
504
|
@property
|
506
505
|
def request_time(self) -> str | None:
|
507
506
|
"""The CLF-formatted request time (dd/MMM/yyyy:HH:mm:ss +-hhmm)"""
|
508
|
-
return self
|
507
|
+
return self.get("requestTime")
|
509
508
|
|
510
509
|
@property
|
511
510
|
def request_time_epoch(self) -> int:
|
512
511
|
"""The Epoch-formatted request time."""
|
513
|
-
return self["
|
512
|
+
return self["requestTimeEpoch"]
|
514
513
|
|
515
514
|
@property
|
516
515
|
def resource_id(self) -> str:
|
517
|
-
return self["
|
516
|
+
return self["resourceId"]
|
518
517
|
|
519
518
|
@property
|
520
519
|
def resource_path(self) -> str:
|
521
|
-
return self["
|
520
|
+
return self["resourcePath"]
|
522
521
|
|
523
522
|
|
524
523
|
class RequestContextV2Http(DictWrapper):
|
525
524
|
@property
|
526
525
|
def method(self) -> str:
|
527
|
-
return self["
|
526
|
+
return self["method"]
|
528
527
|
|
529
528
|
@property
|
530
529
|
def path(self) -> str:
|
531
|
-
return self["
|
530
|
+
return self["path"]
|
532
531
|
|
533
532
|
@property
|
534
533
|
def protocol(self) -> str:
|
535
534
|
"""The request protocol, for example, HTTP/1.1."""
|
536
|
-
return self["
|
535
|
+
return self["protocol"]
|
537
536
|
|
538
537
|
@property
|
539
538
|
def source_ip(self) -> str:
|
540
539
|
"""The source IP address of the TCP connection making the request to API Gateway."""
|
541
|
-
return self["
|
540
|
+
return self["sourceIp"]
|
542
541
|
|
543
542
|
@property
|
544
543
|
def user_agent(self) -> str:
|
545
544
|
"""The User Agent of the API caller."""
|
546
|
-
return self["
|
545
|
+
return self["userAgent"]
|
547
546
|
|
548
547
|
|
549
548
|
class BaseRequestContextV2(DictWrapper):
|
550
549
|
@property
|
551
550
|
def account_id(self) -> str:
|
552
551
|
"""The AWS account ID associated with the request."""
|
553
|
-
return self["
|
552
|
+
return self["accountId"]
|
554
553
|
|
555
554
|
@property
|
556
555
|
def api_id(self) -> str:
|
557
556
|
"""The identifier API Gateway assigns to your API."""
|
558
|
-
return self["
|
557
|
+
return self["apiId"]
|
559
558
|
|
560
559
|
@property
|
561
560
|
def domain_name(self) -> str:
|
562
561
|
"""A domain name"""
|
563
|
-
return self["
|
562
|
+
return self["domainName"]
|
564
563
|
|
565
564
|
@property
|
566
565
|
def domain_prefix(self) -> str:
|
567
|
-
return self["
|
566
|
+
return self["domainPrefix"]
|
568
567
|
|
569
568
|
@property
|
570
569
|
def http(self) -> RequestContextV2Http:
|
571
|
-
return RequestContextV2Http(self
|
570
|
+
return RequestContextV2Http(self["http"])
|
572
571
|
|
573
572
|
@property
|
574
573
|
def request_id(self) -> str:
|
575
574
|
"""The ID that API Gateway assigns to the API request."""
|
576
|
-
return self["
|
575
|
+
return self["requestId"]
|
577
576
|
|
578
577
|
@property
|
579
578
|
def route_key(self) -> str:
|
580
579
|
"""The selected route key."""
|
581
|
-
return self["
|
580
|
+
return self["routeKey"]
|
582
581
|
|
583
582
|
@property
|
584
583
|
def stage(self) -> str:
|
585
584
|
"""The deployment stage of the API request"""
|
586
|
-
return self["
|
585
|
+
return self["stage"]
|
587
586
|
|
588
587
|
@property
|
589
588
|
def time(self) -> str:
|
590
589
|
"""The CLF-formatted request time (dd/MMM/yyyy:HH:mm:ss +-hhmm)."""
|
591
|
-
return self["
|
590
|
+
return self["time"]
|
592
591
|
|
593
592
|
@property
|
594
593
|
def time_epoch(self) -> int:
|
595
594
|
"""The Epoch-formatted request time."""
|
596
|
-
return self["
|
595
|
+
return self["timeEpoch"]
|
597
596
|
|
598
597
|
@property
|
599
598
|
def authentication(self) -> RequestContextClientCert | None:
|
600
599
|
"""Optional when using mutual TLS authentication"""
|
601
600
|
# FunctionURL might have NONE as AuthZ
|
602
|
-
authentication = self
|
601
|
+
authentication = self.get("authentication") or {}
|
603
602
|
client_cert = authentication.get("clientCert")
|
604
603
|
return None if client_cert is None else RequestContextClientCert(client_cert)
|
@@ -177,30 +177,25 @@ class KinesisFirehoseDataTransformationResponse:
|
|
177
177
|
|
178
178
|
|
179
179
|
class KinesisFirehoseRecordMetadata(DictWrapper):
|
180
|
-
@property
|
181
|
-
def _metadata(self) -> dict:
|
182
|
-
"""Optional: metadata associated with this record; present only when Kinesis Stream is source"""
|
183
|
-
return self["kinesisRecordMetadata"] # could raise KeyError
|
184
|
-
|
185
180
|
@property
|
186
181
|
def shard_id(self) -> str:
|
187
182
|
"""Kinesis stream shard ID; present only when Kinesis Stream is source"""
|
188
|
-
return self
|
183
|
+
return self["shardId"]
|
189
184
|
|
190
185
|
@property
|
191
186
|
def partition_key(self) -> str:
|
192
187
|
"""Kinesis stream partition key; present only when Kinesis Stream is source"""
|
193
|
-
return self
|
188
|
+
return self["partitionKey"]
|
194
189
|
|
195
190
|
@property
|
196
191
|
def approximate_arrival_timestamp(self) -> int:
|
197
192
|
"""Kinesis stream approximate arrival ISO timestamp; present only when Kinesis Stream is source"""
|
198
|
-
return self
|
193
|
+
return self["approximateArrivalTimestamp"]
|
199
194
|
|
200
195
|
@property
|
201
196
|
def sequence_number(self) -> str:
|
202
197
|
"""Kinesis stream sequence number; present only when Kinesis Stream is source"""
|
203
|
-
return self
|
198
|
+
return self["sequenceNumber"]
|
204
199
|
|
205
200
|
@property
|
206
201
|
def subsequence_number(self) -> int:
|
@@ -208,7 +203,7 @@ class KinesisFirehoseRecordMetadata(DictWrapper):
|
|
208
203
|
|
209
204
|
Note: this will only be present for Kinesis streams using record aggregation
|
210
205
|
"""
|
211
|
-
return self
|
206
|
+
return self["subsequenceNumber"]
|
212
207
|
|
213
208
|
|
214
209
|
class KinesisFirehoseRecord(DictWrapper):
|
@@ -230,7 +225,8 @@ class KinesisFirehoseRecord(DictWrapper):
|
|
230
225
|
@property
|
231
226
|
def metadata(self) -> KinesisFirehoseRecordMetadata | None:
|
232
227
|
"""Optional: metadata associated with this record; present only when Kinesis Stream is source"""
|
233
|
-
|
228
|
+
metadata = self.get("kinesisRecordMetadata")
|
229
|
+
return KinesisFirehoseRecordMetadata(metadata) if metadata else None
|
234
230
|
|
235
231
|
@property
|
236
232
|
def data_as_bytes(self) -> bytes:
|
@@ -15,27 +15,27 @@ class KinesisStreamRecordPayload(DictWrapper):
|
|
15
15
|
@property
|
16
16
|
def approximate_arrival_timestamp(self) -> float:
|
17
17
|
"""The approximate time that the record was inserted into the stream"""
|
18
|
-
return float(self["
|
18
|
+
return float(self["approximateArrivalTimestamp"])
|
19
19
|
|
20
20
|
@property
|
21
21
|
def data(self) -> str:
|
22
22
|
"""The data blob"""
|
23
|
-
return self["
|
23
|
+
return self["data"]
|
24
24
|
|
25
25
|
@property
|
26
26
|
def kinesis_schema_version(self) -> str:
|
27
27
|
"""Schema version for the record"""
|
28
|
-
return self["
|
28
|
+
return self["kinesisSchemaVersion"]
|
29
29
|
|
30
30
|
@property
|
31
31
|
def partition_key(self) -> str:
|
32
32
|
"""Identifies which shard in the stream the data record is assigned to"""
|
33
|
-
return self["
|
33
|
+
return self["partitionKey"]
|
34
34
|
|
35
35
|
@property
|
36
36
|
def sequence_number(self) -> str:
|
37
37
|
"""The unique identifier of the record within its shard"""
|
38
|
-
return self["
|
38
|
+
return self["sequenceNumber"]
|
39
39
|
|
40
40
|
def data_as_bytes(self) -> bytes:
|
41
41
|
"""Decode binary encoded data as bytes"""
|
@@ -94,7 +94,7 @@ class KinesisStreamRecord(DictWrapper):
|
|
94
94
|
@property
|
95
95
|
def kinesis(self) -> KinesisStreamRecordPayload:
|
96
96
|
"""Underlying Kinesis record associated with the event"""
|
97
|
-
return KinesisStreamRecordPayload(self
|
97
|
+
return KinesisStreamRecordPayload(self["kinesis"])
|
98
98
|
|
99
99
|
|
100
100
|
class KinesisStreamEvent(DictWrapper):
|
@@ -18,7 +18,7 @@ class S3Identity(DictWrapper):
|
|
18
18
|
class S3RequestParameters(DictWrapper):
|
19
19
|
@property
|
20
20
|
def source_ip_address(self) -> str:
|
21
|
-
return self["
|
21
|
+
return self["sourceIPAddress"]
|
22
22
|
|
23
23
|
|
24
24
|
class S3EventNotificationEventBridgeBucket(DictWrapper):
|
@@ -40,8 +40,8 @@ class S3EventBridgeNotificationObject(DictWrapper):
|
|
40
40
|
|
41
41
|
@property
|
42
42
|
def etag(self) -> str:
|
43
|
-
"""Object
|
44
|
-
return self.get("etag"
|
43
|
+
"""Object eTag. Object deletion event doesn't contain eTag; we default to empty string"""
|
44
|
+
return self.get("etag") or ""
|
45
45
|
|
46
46
|
@property
|
47
47
|
def version_id(self) -> str:
|
@@ -156,77 +156,77 @@ class S3EventBridgeNotificationEvent(EventBridgeEvent):
|
|
156
156
|
class S3Bucket(DictWrapper):
|
157
157
|
@property
|
158
158
|
def name(self) -> str:
|
159
|
-
return self["
|
159
|
+
return self["name"]
|
160
160
|
|
161
161
|
@property
|
162
162
|
def owner_identity(self) -> S3Identity:
|
163
|
-
return S3Identity(self["
|
163
|
+
return S3Identity(self["ownerIdentity"])
|
164
164
|
|
165
165
|
@property
|
166
166
|
def arn(self) -> str:
|
167
|
-
return self["
|
167
|
+
return self["arn"]
|
168
168
|
|
169
169
|
|
170
170
|
class S3Object(DictWrapper):
|
171
171
|
@property
|
172
172
|
def key(self) -> str:
|
173
173
|
"""Object key"""
|
174
|
-
return self["
|
174
|
+
return self["key"]
|
175
175
|
|
176
176
|
@property
|
177
177
|
def size(self) -> int:
|
178
178
|
"""Object byte size"""
|
179
|
-
return int(self["
|
179
|
+
return int(self["size"])
|
180
180
|
|
181
181
|
@property
|
182
182
|
def etag(self) -> str:
|
183
183
|
"""Object eTag. Object deletion event doesn't contain eTag; we default to empty string"""
|
184
|
-
return self
|
184
|
+
return self.get("eTag") or ""
|
185
185
|
|
186
186
|
@property
|
187
187
|
def version_id(self) -> str | None:
|
188
188
|
"""Object version if bucket is versioning-enabled, otherwise null"""
|
189
|
-
return self
|
189
|
+
return self.get("versionId")
|
190
190
|
|
191
191
|
@property
|
192
192
|
def sequencer(self) -> str:
|
193
193
|
"""A string representation of a hexadecimal value used to determine event sequence,
|
194
194
|
only used with PUTs and DELETEs
|
195
195
|
"""
|
196
|
-
return self["
|
196
|
+
return self["sequencer"]
|
197
197
|
|
198
198
|
|
199
199
|
class S3Message(DictWrapper):
|
200
200
|
@property
|
201
201
|
def s3_schema_version(self) -> str:
|
202
|
-
return self["
|
202
|
+
return self["s3SchemaVersion"]
|
203
203
|
|
204
204
|
@property
|
205
205
|
def configuration_id(self) -> str:
|
206
206
|
"""ID found in the bucket notification configuration"""
|
207
|
-
return self["
|
207
|
+
return self["configurationId"]
|
208
208
|
|
209
209
|
@property
|
210
210
|
def bucket(self) -> S3Bucket:
|
211
|
-
return S3Bucket(self
|
211
|
+
return S3Bucket(self["bucket"])
|
212
212
|
|
213
213
|
@property
|
214
214
|
def get_object(self) -> S3Object:
|
215
215
|
"""Get the `object` property as an S3Object"""
|
216
216
|
# Note: this name conflicts with existing python builtins
|
217
|
-
return S3Object(self
|
217
|
+
return S3Object(self["object"])
|
218
218
|
|
219
219
|
|
220
220
|
class S3EventRecordGlacierRestoreEventData(DictWrapper):
|
221
221
|
@property
|
222
222
|
def lifecycle_restoration_expiry_time(self) -> str:
|
223
223
|
"""Time when the object restoration will be expired."""
|
224
|
-
return self["
|
224
|
+
return self["lifecycleRestorationExpiryTime"]
|
225
225
|
|
226
226
|
@property
|
227
227
|
def lifecycle_restore_storage_class(self) -> str:
|
228
228
|
"""Source storage class for restore"""
|
229
|
-
return self["
|
229
|
+
return self["lifecycleRestoreStorageClass"]
|
230
230
|
|
231
231
|
|
232
232
|
class S3EventRecordGlacierEventData(DictWrapper):
|
@@ -236,7 +236,7 @@ class S3EventRecordGlacierEventData(DictWrapper):
|
|
236
236
|
|
237
237
|
The glacierEventData key is only visible for s3:ObjectRestore:Completed events
|
238
238
|
"""
|
239
|
-
return S3EventRecordGlacierRestoreEventData(self
|
239
|
+
return S3EventRecordGlacierRestoreEventData(self["restoreEventData"])
|
240
240
|
|
241
241
|
|
242
242
|
class S3EventRecord(DictWrapper):
|
@@ -272,7 +272,7 @@ class S3EventRecord(DictWrapper):
|
|
272
272
|
|
273
273
|
@property
|
274
274
|
def request_parameters(self) -> S3RequestParameters:
|
275
|
-
return S3RequestParameters(self
|
275
|
+
return S3RequestParameters(self["requestParameters"])
|
276
276
|
|
277
277
|
@property
|
278
278
|
def response_elements(self) -> dict[str, str]:
|
@@ -286,7 +286,7 @@ class S3EventRecord(DictWrapper):
|
|
286
286
|
|
287
287
|
@property
|
288
288
|
def s3(self) -> S3Message:
|
289
|
-
return S3Message(self
|
289
|
+
return S3Message(self["s3"])
|
290
290
|
|
291
291
|
@property
|
292
292
|
def glacier_event_data(self) -> S3EventRecordGlacierEventData | None:
|
@@ -212,11 +212,11 @@ class SESReceipt(DictWrapper):
|
|
212
212
|
class SESMessage(DictWrapper):
|
213
213
|
@property
|
214
214
|
def mail(self) -> SESMail:
|
215
|
-
return SESMail(self["
|
215
|
+
return SESMail(self["mail"])
|
216
216
|
|
217
217
|
@property
|
218
218
|
def receipt(self) -> SESReceipt:
|
219
|
-
return SESReceipt(self["
|
219
|
+
return SESReceipt(self["receipt"])
|
220
220
|
|
221
221
|
|
222
222
|
class SESEventRecord(DictWrapper):
|
@@ -232,7 +232,7 @@ class SESEventRecord(DictWrapper):
|
|
232
232
|
|
233
233
|
@property
|
234
234
|
def ses(self) -> SESMessage:
|
235
|
-
return SESMessage(self
|
235
|
+
return SESMessage(self["ses"])
|
236
236
|
|
237
237
|
|
238
238
|
class SESEvent(DictWrapper):
|
@@ -16,6 +16,8 @@ from aws_lambda_powertools.utilities.data_classes.shared_functions import base64
|
|
16
16
|
|
17
17
|
|
18
18
|
class VPCLatticeEventBase(BaseProxyEvent):
|
19
|
+
# is_base64_encoded and path are inherited from BaseProxyEvent class.
|
20
|
+
|
19
21
|
@property
|
20
22
|
def body(self) -> str:
|
21
23
|
"""The VPC Lattice body."""
|
@@ -169,16 +171,6 @@ class VPCLatticeEventV2(VPCLatticeEventBase):
|
|
169
171
|
"""The VPC Lattice v2 Event version"""
|
170
172
|
return self["version"]
|
171
173
|
|
172
|
-
@property
|
173
|
-
def is_base64_encoded(self) -> bool | None:
|
174
|
-
"""A boolean flag to indicate if the applicable request payload is Base64-encode"""
|
175
|
-
return self.get("isBase64Encoded")
|
176
|
-
|
177
|
-
@property
|
178
|
-
def path(self) -> str:
|
179
|
-
"""The VPC Lattice v2 Event path"""
|
180
|
-
return self["path"]
|
181
|
-
|
182
174
|
@property
|
183
175
|
def request_context(self) -> vpcLatticeEventV2RequestContext:
|
184
176
|
"""The VPC Lattice v2 Event request context."""
|
{aws_lambda_powertools-3.8.1a6.dist-info → aws_lambda_powertools-3.8.1a7.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aws_lambda_powertools
|
3
|
-
Version: 3.8.
|
3
|
+
Version: 3.8.1a7
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
5
5
|
License: MIT
|
6
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
@@ -28,7 +28,7 @@ Provides-Extra: validation
|
|
28
28
|
Requires-Dist: aws-encryption-sdk (>=3.1.1,<5.0.0) ; extra == "all" or extra == "datamasking"
|
29
29
|
Requires-Dist: aws-xray-sdk (>=2.8.0,<3.0.0) ; extra == "tracer" or extra == "all"
|
30
30
|
Requires-Dist: boto3 (>=1.34.32,<2.0.0) ; extra == "aws-sdk"
|
31
|
-
Requires-Dist: datadog-lambda (>=
|
31
|
+
Requires-Dist: datadog-lambda (>=6.106.0,<7.0.0) ; extra == "datadog"
|
32
32
|
Requires-Dist: fastjsonschema (>=2.14.5,<3.0.0) ; extra == "validation" or extra == "all"
|
33
33
|
Requires-Dist: jmespath (>=1.0.1,<2.0.0)
|
34
34
|
Requires-Dist: jsonpath-ng (>=1.6.0,<2.0.0) ; extra == "all" or extra == "datamasking"
|