Module aws_lambda_powertools.utilities.batch.decorators
Functions
def async_batch_processor(handler: Callable, event: Dict, context: LambdaContext, record_handler: Callable[..., Awaitable[Any]], processor: AsyncBatchProcessor)-
Middleware to handle batch event processing
Notes
Consider using async_process_partial_response function for an easier experience.
Parameters
handler:Callable- Lambda's handler
event:Dict- Lambda's Event
context:LambdaContext- Lambda's Context
record_handler:Callable[…, Awaitable[Any]]- Callable to process each record from the batch
processor:AsyncBatchProcessor- Batch Processor to handle partial failure cases
Examples
Processes Lambda's event with a BasePartialProcessor >>> from aws_lambda_powertools.utilities.batch import async_batch_processor, AsyncBatchProcessor >>> from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSRecord >>> >>> processor = AsyncBatchProcessor(event_type=EventType.SQS) >>> >>> async def async_record_handler(record: SQSRecord): >>> payload: str = record.body >>> return payload >>> >>> @async_batch_processor(record_handler=async_record_handler, processor=processor) >>> def lambda_handler(event, context): >>> return processor.response()
Limitations
- Sync batch processors. Use
batch_processor()instead.
def async_process_partial_response(event: Dict, record_handler: Callable, processor: AsyncBatchProcessor, context: LambdaContext | None = None) ‑> PartialItemFailureResponse-
Higher level function to handle batch event processing asynchronously.
Parameters
event:Dict- Lambda's original event
record_handler:Callable- Callable to process each record from the batch
processor:AsyncBatchProcessor- Batch Processor to handle partial failure cases
context:LambdaContext- Lambda's context, used to optionally inject in record handler
Returns
result:PartialItemFailureResponse- Lambda Partial Batch Response
Examples
Processes Lambda's SQS event
from aws_lambda_powertools.utilities.batch import AsyncBatchProcessor, EventType, process_partial_response from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSRecord processor = BatchProcessor(EventType.SQS) async def record_handler(record: SQSRecord): return record.body def handler(event, context): return async_process_partial_response( event=event, record_handler=record_handler, processor=processor, context=context )Limitations
- Sync batch processors. Use
process_partial_response()instead.
def batch_processor(handler: Callable, event: Dict, context: LambdaContext, record_handler: Callable, processor: BatchProcessor)-
Middleware to handle batch event processing
Notes
Consider using process_partial_response function for an easier experience.
Parameters
handler:Callable- Lambda's handler
event:Dict- Lambda's Event
context:LambdaContext- Lambda's Context
record_handler:Callable- Callable or corutine to process each record from the batch
processor:BatchProcessor- Batch Processor to handle partial failure cases
Examples
Processes Lambda's event with a BatchProcessor
>>> from aws_lambda_powertools.utilities.batch import batch_processor, BatchProcessor, EventType >>> from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSRecord >>> >>> processor = BatchProcessor(EventType.SQS) >>> >>> def record_handler(record): >>> return record["body"] >>> >>> @batch_processor(record_handler=record_handler, processor=BatchProcessor()) >>> def handler(event, context): >>> return processor.response()Limitations
- Async batch processors. Use
async_batch_processor()instead.
def process_partial_response(event: Dict, record_handler: Callable, processor: BasePartialBatchProcessor, context: LambdaContext | None = None) ‑> PartialItemFailureResponse-
Higher level function to handle batch event processing.
Parameters
event:Dict- Lambda's original event
record_handler:Callable- Callable to process each record from the batch
processor:BasePartialBatchProcessor- Batch Processor to handle partial failure cases
context:LambdaContext- Lambda's context, used to optionally inject in record handler
Returns
result:PartialItemFailureResponse- Lambda Partial Batch Response
Examples
Processes Lambda's SQS event
from aws_lambda_powertools.utilities.batch import BatchProcessor, EventType, process_partial_response from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSRecord processor = BatchProcessor(EventType.SQS) def record_handler(record: SQSRecord): return record.body def handler(event, context): return process_partial_response( event=event, record_handler=record_handler, processor=processor, context=context )Limitations
- Async batch processors. Use
async_process_partial_response()instead.