|
| 1 | +from typing import Iterator |
1 | 2 | import json
|
| 3 | +from aws_lambda_powertools.utilities.data_classes import S3Event, SQSEvent, SNSEvent, SESEvent, EventBridgeEvent |
| 4 | +import test_events |
2 | 5 |
|
3 |
| -from aws_lambda_powertools.utilities.data_classes import S3Event, SQSEvent |
4 |
| -# from aws_lambda_powertools.utilities.data_classes.sns_event import SNSMessage |
5 |
| -from aws_lambda_powertools.utilities.data_classes import event_source |
6 |
| - |
7 |
| - |
8 |
| -# @event_source(data_class=SQSEvent) |
9 |
| -def lambda_handler(event: SQSEvent, context): |
10 |
| - event = SQSEvent(event) |
11 |
| - nesteds3event = event.decode_nested_events(S3Event) |
12 |
| - for record in event.records: #then how would a for loop work.. |
13 |
| - nested_event = record.decode_nested_event(S3Event) #for loop must be for same events inside one event |
14 |
| - print(nested_event, nested_event) |
15 |
| - |
16 |
| - # event = SQSEvent() |
17 |
| - # sns_events = event.decode_nested_events(Iterator[SNSEvent]) |
18 |
| - # for sns_event in sns_events: |
19 |
| - # s3_events = sns_event.decode_nested_events(S3Event) |
20 |
| - # for s3_event in s3_events: |
21 |
| - # print(s3_event.bucket.name) |
22 |
| - |
23 |
| - |
24 |
| - |
25 |
| - |
26 |
| -event = SQSEvent({ |
27 |
| - "Records": [ |
28 |
| - { |
29 |
| - "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78", |
30 |
| - "receiptHandle": "MessageReceiptHandle", |
31 |
| - "body": { |
32 |
| - "Message": "{\"Records\":[{\"eventVersion\":\"2.1\",\"eventSource\":\"aws:s3\",\"awsRegion\":\"us-east-1\",\"eventTime\":\"2023-01-01T00:00:00.000Z\",\"eventName\":\"ObjectCreated:Put\",\"userIdentity\":{\"principalId\":\"AWS:123456789012:example-user\"},\"requestParameters\":{\"sourceIPAddress\":\"127.0.0.1\"},\"responseElements\":{\"x-amz-request-id\":\"example-request-id\",\"x-amz-id-2\":\"example-id\"},\"s3\":{\"s3SchemaVersion\":\"1.0\",\"configurationId\":\"testConfigRule\",\"bucket\":{\"name\":\"example-bucket\",\"ownerIdentity\":{\"principalId\":\"EXAMPLE\"},\"arn\":\"arn:aws:s3:::example-bucket\"},\"object\":{\"key\":\"example-object.txt\",\"size\":1024,\"eTag\":\"example-tag\",\"versionId\":\"1\",\"sequencer\":\"example-sequencer\"}}}]}" |
33 |
| - }, |
34 |
| - "attributes": { |
35 |
| - "ApproximateReceiveCount": "1", |
36 |
| - "SentTimestamp": "1523232000000", |
37 |
| - "SenderId": "123456789012", |
38 |
| - "ApproximateFirstReceiveTimestamp": "1523232000001" |
39 |
| - }, |
40 |
| - "messageAttributes": {}, |
41 |
| - "md5OfBody": "7b270e59b47ff90a553787216d55d91d", |
42 |
| - "eventSource": "aws:sqs", |
43 |
| - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:MyQueue", |
44 |
| - "awsRegion": "us-east-1" |
45 |
| - } |
46 |
| - ] |
47 |
| -}) |
48 |
| - |
49 |
| -lambda_handler(event, {}) |
| 6 | + |
| 7 | +def lambda_handler_sqs_s3(event: SQSEvent = test_events.sqs_s3_event): # sqs(s3) |
| 8 | + sqs_event = SQSEvent(event) |
| 9 | + s3_event = sqs_event.decode_nested_events(S3Event) |
| 10 | + for rec in s3_event: |
| 11 | + print('rec:', rec.bucket_name) |
| 12 | + # for sqs_record in sqs_event.records: |
| 13 | + # # print('body in main:', sqs_record.body) |
| 14 | + # # s3_event = sqs_event.decode_nested_events(Iterator[S3Event]) # is this correct format? |
| 15 | + # s3_event = sqs_event.decode_nested_events(S3Event) |
| 16 | + # for rec in s3_event: |
| 17 | + # print('rec:', rec.bucket_name) |
| 18 | + # print(next(s3_event).bucket_name) # use this if not inside a for loop |
| 19 | + |
| 20 | + |
| 21 | +def lambda_handler_sqs_sns(event: SQSEvent = test_events.sqs_sns_event): # sqs(sns) |
| 22 | + sqs_event = SQSEvent(event) |
| 23 | + sns_event = sqs_event.decode_nested_events(SNSEvent) |
| 24 | + for rec in sns_event: |
| 25 | + print('rec:', type(rec), rec.sns_message) |
| 26 | + |
| 27 | + |
| 28 | +def lambda_handler_sns_s3(event: SNSEvent = test_events.sns_s3_event): # sns(s3) |
| 29 | + sns_event = SNSEvent(event) |
| 30 | + s3_event = sns_event.decode_nested_events(S3Event) |
| 31 | + for rec in s3_event: |
| 32 | + print(type(rec)) |
| 33 | + print('rec:', rec.bucket_name) |
| 34 | + |
| 35 | + |
| 36 | +def lambda_handler_sqs_s3_multi(event: SQSEvent = test_events.sqs_s3_multi_event): # sqs(s3, s3) |
| 37 | + sqs_event = SQSEvent(event) |
| 38 | + s3_event = sqs_event.decode_nested_events(S3Event) |
| 39 | + for rec in s3_event: |
| 40 | + print('rec:', rec.bucket_name) |
| 41 | + |
| 42 | + |
| 43 | +def lambda_handler_sqs_sns_s3(event: SQSEvent = test_events.sqs_sns_s3_event): # sqs(sns(s3)) |
| 44 | + sqs_event = SQSEvent(event) |
| 45 | + sns_event = sqs_event.decode_nested_events(SNSEvent) |
| 46 | + for rec in sns_event: |
| 47 | + print('rec:', type(rec), rec.sns_message) |
| 48 | + # s3_event = sns_event.decode_nested_events(S3Event) |
| 49 | + |
| 50 | + |
| 51 | +def lambda_handler_sns_ses(event: SNSEvent = test_events.sns_ses_event): # sns(ses) |
| 52 | + sns_event = SNSEvent(event) |
| 53 | + ses_event = sns_event.decode_nested_events(SESEvent) |
| 54 | + for rec in ses_event: |
| 55 | + print(type(rec)) |
| 56 | + print('rec:', rec.get("mail").get('source')) #but can't do rec.mail bc no "Records" key.. |
| 57 | + |
| 58 | +def lambda_handler_eb_s3(event: EventBridgeEvent = test_events.eb_s3_event): # eventbridge(s3) |
| 59 | + eb_event = EventBridgeEvent(event) |
| 60 | + s3_event = eb_event.decode_nested_events(S3Event) |
| 61 | + for rec in s3_event: |
| 62 | + print(type(rec)) |
| 63 | + print('rec:', rec) |
| 64 | + |
| 65 | +lambda_handler_sqs_s3(test_events.sqs_s3_event) |
| 66 | +# lambda_handler_sqs_sns(test_events.sqs_sns_event) #not working bc sns doesn't have Records key |
| 67 | +lambda_handler_sns_s3(test_events.sns_s3_event) |
| 68 | +lambda_handler_sqs_s3_multi(test_events.sqs_s3_multi_event) |
| 69 | +# lambda_handler_sqs_sns_s3(test_events.sqs_sns_s3_event) #not working bc sns doesn't have Records key |
| 70 | +lambda_handler_sns_ses(test_events.sns_ses_event) |
| 71 | +# lambda_handler_eb_s3(test_events.eb_s3_event) #EB returning a str, not dict |
0 commit comments