|
1 | 1 | from common.clients import logger |
2 | 2 | from common.clients import STREAM_NAME |
3 | 3 | from common.log_decorator import logging_decorator |
| 4 | +from common.aws_lambda_event import AwsLambdaEvent |
| 5 | +from common.aws_lambda_sqs_event_record import AwsLambdaSqsEventRecord |
4 | 6 | from record_processor import process_record |
5 | 7 |
|
6 | 8 | ''' |
|
10 | 12 |
|
11 | 13 |
|
12 | 14 | @logging_decorator(prefix="id_sync", stream_name=STREAM_NAME) |
13 | | -def handler(event, _): |
| 15 | +def handler(event_data, _): |
14 | 16 |
|
15 | 17 | try: |
16 | | - if "Records" in event: |
17 | | - logger.info("Processing S3 event with %d records", len(event.get('Records', []))) |
18 | | - record_count = len(event.get('Records', [])) |
19 | | - if record_count == 0: |
20 | | - logger.info("No records found in event") |
21 | | - return {"status": "success", "message": "No records found in event"} |
| 18 | + event = AwsLambdaEvent(event_data) |
| 19 | + record_count = len(event.records) |
| 20 | + if record_count > 0: |
| 21 | + logger.info("Processing SQS event with %d records", record_count) |
| 22 | + error_count = 0 |
| 23 | + file_keys = [] |
| 24 | + for record in event.records: |
| 25 | + record: AwsLambdaSqsEventRecord |
| 26 | + record_result = process_record(record, None) |
| 27 | + file_keys.append(record_result["file_key"]) |
| 28 | + if record_result["status"] == "error": |
| 29 | + error_count += 1 |
| 30 | + if error_count > 0: |
| 31 | + logger.error("Processed %d records with %d errors", record_count, error_count) |
| 32 | + return {"status": "error", "message": f"Processed {record_count} records with {error_count} errors", |
| 33 | + "file_keys": file_keys} |
22 | 34 | else: |
23 | | - error_count = 0 |
24 | | - file_keys = [] |
25 | | - for record in event.get('Records', []): |
26 | | - record_result = process_record(record, None) |
27 | | - file_keys.append(record_result["file_key"]) |
28 | | - if record_result["status"] == "error": |
29 | | - error_count += 1 |
30 | | - if error_count > 0: |
31 | | - logger.error("Processed %d records with %d errors", record_count, error_count) |
32 | | - return {"status": "error", "message": f"Processed {record_count} records with {error_count} errors", |
33 | | - "file_keys": file_keys} |
34 | | - else: |
35 | | - logger.info("Successfully processed all %d records", record_count) |
36 | | - return {"status": "success", "message": f"Successfully processed {record_count} records", |
37 | | - "file_keys": file_keys} |
| 35 | + logger.info("Successfully processed all %d records", record_count) |
| 36 | + return {"status": "success", "message": f"Successfully processed {record_count} records", |
| 37 | + "file_keys": file_keys} |
38 | 38 | else: |
39 | 39 | logger.info("No records found in event") |
40 | 40 | return {"status": "success", "message": "No records found in event"} |
|
0 commit comments