Lambda Handler with Batch Processing
use lambda_runtime::{service_fn, Error, LambdaEvent};
use aws_lambda_events::event::sqs::{SqsEvent, SqsBatchResponse, SqsBatchItemFailure};
async fn handler(event: LambdaEvent<SqsEvent>) -> Result<SqsBatchResponse, Error> {
let mut failures = Vec::new();
for record in &event.payload.records {
let message_id = record.message_id.clone().unwrap_or_default();
match process_record(record).await {
Ok(()) => {}
Err(e) => {
error!(%e, %message_id, "record failed");
failures.push(SqsBatchItemFailure { item_identifier: message_id });
}
}
}
Ok(SqsBatchResponse { batch_item_failures: failures })
}