|
15 | 15 | from aws_lambda_powertools.utilities.data_classes.dynamo_db_stream_event import DynamoDBRecord
|
16 | 16 | from aws_lambda_powertools.utilities.data_classes.kinesis_stream_event import KinesisStreamRecord
|
17 | 17 | from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSRecord
|
| 18 | +from aws_lambda_powertools.utilities.data_classes.sns_event import SNSEventRecord |
18 | 19 |
|
19 | 20 | logger = logging.getLogger(__name__)
|
20 | 21 |
|
21 | 22 |
|
22 | 23 | class EventType(Enum):
|
23 | 24 | SQS = "SQS"
|
| 25 | + SNS = "SNS" |
24 | 26 | KinesisDataStreams = "KinesisDataStreams"
|
25 | 27 | DynamoDBStreams = "DynamoDBStreams"
|
26 | 28 |
|
@@ -330,11 +332,13 @@ def __init__(self, event_type: EventType, model: Optional["BatchTypeModels"] = N
|
330 | 332 | self.batch_response = copy.deepcopy(self.DEFAULT_RESPONSE)
|
331 | 333 | self._COLLECTOR_MAPPING = {
|
332 | 334 | EventType.SQS: self._collect_sqs_failures,
|
| 335 | + EventType.SNS: self._collect_sns_failures, |
333 | 336 | EventType.KinesisDataStreams: self._collect_kinesis_failures,
|
334 | 337 | EventType.DynamoDBStreams: self._collect_dynamodb_failures,
|
335 | 338 | }
|
336 | 339 | self._DATA_CLASS_MAPPING = {
|
337 | 340 | EventType.SQS: SQSRecord,
|
| 341 | + EventType.SNS: SNSEventRecord, |
338 | 342 | EventType.KinesisDataStreams: KinesisStreamRecord,
|
339 | 343 | EventType.DynamoDBStreams: DynamoDBRecord,
|
340 | 344 | }
|
@@ -413,6 +417,13 @@ def _collect_sqs_failures(self):
|
413 | 417 | failures.append({"itemIdentifier": msg_id})
|
414 | 418 | return failures
|
415 | 419 |
|
| 420 | + def _collect_sns_failures(self): |
| 421 | + failures = [] |
| 422 | + for msg in self.fail_messages: |
| 423 | + msg_id = msg.sns.MessageId if self.model else msg.sns.message_id |
| 424 | + failures.append({"itemIdentifier": msg_id}) |
| 425 | + return failures |
| 426 | + |
416 | 427 | def _collect_kinesis_failures(self):
|
417 | 428 | failures = []
|
418 | 429 | for msg in self.fail_messages:
|
|
0 commit comments