Skip to content

Commit 02935e0

Browse files
committed
Fixed triple nested to not use iterator
1 parent 31a7a09 commit 02935e0

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

aws_lambda_powertools/utilities/data_classes/poc.py

+20-13
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
from aws_lambda_powertools.utilities.data_classes import S3Event, SQSEvent, SNSEvent, EventBridgeEvent, KinesisFirehoseEvent
22
from aws_lambda_powertools.utilities.data_classes.sns_event import SNSMessage
3-
from aws_lambda_powertools.utilities.data_classes.ses_event import SESMessage
3+
from aws_lambda_powertools.utilities.data_classes.ses_event import SESEventRecord, SESMailCommonHeaders
44
from aws_lambda_powertools.utilities.data_classes.cloud_watch_logs_event import CloudWatchLogsLogEvent
55
from aws_lambda_powertools.utilities.data_classes.s3_event import S3EventBridgeNotificationDetail
66
import aws_lambda_powertools.utilities.data_classes.nested_test_events as nested_test_events
77

88

9-
109
def lambda_handler_sqs_s3(event: SQSEvent = nested_test_events.sqs_s3_event): # sqs(s3)
1110
sqs_event = SQSEvent(event)
1211
s3_event = sqs_event.decode_nested_events(S3Event)
@@ -41,21 +40,28 @@ def lambda_handler_sqs_s3_multi(event: SQSEvent = nested_test_events.sqs_s3_mult
4140
print('sqs_s3_multi_event bucket:', rec.bucket_name)
4241

4342

44-
def lambda_handler_sqs_sns_s3(event: SQSEvent = nested_test_events.sqs_sns_s3_event): # sqs(sns(s3))
43+
def lambda_handler_sqs_sns_s3_direct(event: SQSEvent = nested_test_events.sqs_sns_s3_event): # sqs(sns(s3))
4544
sqs_event = SQSEvent(event)
46-
sns_event = sqs_event.decode_nested_events(SNSMessage)
47-
for rec in sns_event:
48-
# print('sns rec:', type(rec), rec)
49-
# print('sns message:', rec.message)
45+
sns_event = sqs_event.decode_nested_event(SNSMessage)
46+
s3_event = sns_event.decode_nested_event(S3Event)
47+
print('sqs_sns_s3_direct bucket:', s3_event.bucket_name)
5048

51-
s3_event = rec.decode_nested_events(S3Event)
52-
# print('s3 rec:', type(s3_event), s3_event)
53-
print('sqs_sns_s3_event bucket:', next(s3_event).bucket_name)
49+
50+
def lambda_handler_sqs_sns_s3(event: SQSEvent = nested_test_events.sqs_sns_s3_event): # sqs(sns(s3))
51+
sqs_event = SQSEvent(event)
52+
for rec in sqs_event:
53+
sns_event = sqs_event.decode_nested_events(SNSMessage)
54+
for rec in sns_event:
55+
# print('rec:', type(rec), rec)
56+
s3_event = rec.decode_nested_events(S3Event)
57+
for r in s3_event:
58+
# print(type(r))
59+
print('sqs_sns_s3 bucket:', r.bucket_name)
5460

5561

5662
def lambda_handler_sns_ses(event: SNSEvent = nested_test_events.sns_ses_event): # sns(ses)
5763
sns_event = SNSEvent(event)
58-
ses_event = sns_event.decode_nested_events(SESMessage)
64+
ses_event = sns_event.decode_nested_events(SESEventRecord)
5965
for rec in ses_event:
6066
# print('rec:', type(rec), rec)
6167
print('sns_ses_event email:', rec.get("mail").get('source'))
@@ -68,6 +74,7 @@ def lambda_handler_eb_s3(event: EventBridgeEvent = nested_test_events.eb_s3_even
6874
# print('type:', type(rec))
6975
print('eb_s3_event bucket:', rec.bucket.name)
7076

77+
7178
def lambda_handler_sqs_eb_s3(event: nested_test_events.sqs_eb_s3_event): # sqs(eventbridge(s3))
7279
sqs_event = SQSEvent(event)
7380
for rec in sqs_event:
@@ -79,10 +86,10 @@ def lambda_handler_sqs_eb_s3(event: nested_test_events.sqs_eb_s3_event): # sqs(e
7986
# print(type(r))
8087
print('sqs_eb_s3_event bucket:', r.bucket.name)
8188

89+
8290
def lambda_handler_firehose_sns_event(event = nested_test_events.firehose_sns_event): # firehose(sns)
8391
firehose_event = KinesisFirehoseEvent(event)
8492
sns_event = firehose_event.decode_nested_events(SNSMessage)
85-
#just gives back the encrypted data, so can't cast it into SNSEvent, have to decrypt it and then cast it to get the SNSEvent
8693
for rec in sns_event:
8794
print('firehose_sns_event message:', rec.message)
8895

@@ -94,7 +101,7 @@ def lambda_handler_firehose_sns_event(event = nested_test_events.firehose_sns_ev
94101
# print('type:', type(rec), rec)
95102

96103

97-
104+
lambda_handler_sqs_sns_s3_direct(nested_test_events.sqs_sns_s3_event)
98105
lambda_handler_sqs_s3(nested_test_events.sqs_s3_event)
99106
lambda_handler_sqs_s3_single(nested_test_events.sqs_s3_event)
100107
lambda_handler_sqs_sns(nested_test_events.sqs_sns_event)

aws_lambda_powertools/utilities/data_classes/ses_event.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper, EventWrapper
44

55

6-
class SESMailHeader(DictWrapper):
6+
class SESMailHeader(EventWrapper):
77
@property
88
def name(self) -> str:
99
return self["name"]
@@ -13,7 +13,7 @@ def value(self) -> str:
1313
return self["value"]
1414

1515

16-
class SESMailCommonHeaders(DictWrapper):
16+
class SESMailCommonHeaders(EventWrapper):
1717
@property
1818
def return_path(self) -> str:
1919
"""The values in the Return-Path header of the email."""
@@ -111,7 +111,7 @@ def common_headers(self) -> SESMailCommonHeaders:
111111
return SESMailCommonHeaders(self["commonHeaders"])
112112

113113

114-
class SESReceiptStatus(DictWrapper):
114+
class SESReceiptStatus(EventWrapper):
115115
@property
116116
def status(self) -> str:
117117
"""Receipt status
@@ -120,7 +120,7 @@ def status(self) -> str:
120120
return str(self["status"])
121121

122122

123-
class SESReceiptAction(DictWrapper):
123+
class SESReceiptAction(EventWrapper):
124124
@property
125125
def get_type(self) -> str:
126126
"""String that indicates the type of action that was executed.
@@ -149,7 +149,7 @@ def invocation_type(self) -> str:
149149
return self["invocationType"]
150150

151151

152-
class SESReceipt(DictWrapper):
152+
class SESReceipt(EventWrapper):
153153
@property
154154
def timestamp(self) -> str:
155155
"""String that specifies the date and time at which the action was triggered, in ISO 8601 format."""

0 commit comments

Comments
 (0)