@@ -95,14 +95,33 @@ static async Task<SQSBatchResponse> Handler(SQSEvent ev, ILambdaContext context)
9595 if ( string . IsNullOrEmpty ( message . Body ) )
9696 throw new Exception ( "No Body in SQS Message." ) ;
9797 context . Logger . LogInformation ( $ "Received message { message . Body } ") ;
98- var s3Event = JsonSerializer . Deserialize < S3Event > ( message . Body , LinkIndexUpdaterEventSerializerContext . Default . S3Event ) ;
98+
99+ S3Event ? s3Event ;
100+
101+ try
102+ {
103+ s3Event = JsonSerializer . Deserialize < S3Event > ( message . Body , LinkIndexUpdaterEventSerializerContext . Default . S3Event ) ;
104+ }
105+ catch ( JsonSerializerException ex )
106+ {
107+ context . Logger . LogError ( ex , "Failed to deserialize S3 event" ) ;
108+ throw new Exception ( "Failed to deserialize S3 event" , ex ) ;
109+ }
110+ catch ( Exception ex )
111+ {
112+ context . Logger . LogError ( ex , "Failed to deserialize S3 event" ) ;
113+ throw new Exception ( "Failed to deserialize S3 event" , ex ) ;
114+ }
115+
116+
99117 if ( s3Event ? . Records == null || s3Event . Records . Count == 0 )
100118 throw new Exception ( "Invalid S3 event message format" ) ;
101119 var linkReferences = new ConcurrentBag < ( S3Event . S3EventNotificationRecord , LinkReference ) > ( ) ;
102120 await Parallel . ForEachAsync ( s3Event . Records , async ( record , ctx ) =>
103121 {
104122 var s3Bucket = record . S3 . Bucket ;
105123 var s3Object = record . S3 . Object ;
124+
106125 context . Logger . LogInformation ( $ "Get object { s3Object . Key } from bucket { s3Bucket . Name } ") ;
107126 var getObjectResponse = await s3Client . GetObjectAsync ( s3Bucket . Name , s3Object . Key , ctx ) ;
108127 await using var stream = getObjectResponse . ResponseStream ;
0 commit comments