[{"data":1,"prerenderedAt":83},["ShallowReactive",2],{"pattern-lambda-s3-athena-cdk-ts":3},{"id":4,"title":5,"architectureURL":6,"cleanup":7,"contributors":10,"deploy":12,"description":18,"extension":19,"framework":20,"gitHub":21,"highlight":6,"introBox":27,"language":36,"level":37,"meta":38,"patternArch":39,"resources":60,"s3URL":6,"services":6,"stem":74,"testing":75,"videoId":6,"__hash__":82},"patterns\u002Fpatterns\u002Flambda-s3-athena-cdk-ts.json","AWS Lambda Failed-Event Destination and Amazon Athena Analytics",null,{"text":8},[9],"Delete the stack: \u003Ccode>cdk destroy\u003C\u002Fcode>",[11],"content\u002Fcontributors\u002Fmarco-jahn.json",{"text":13},[14,15,16,17],"Clone the repository: \u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u003C\u002Fcode>","Change directory: \u003Ccode>cd lambda-s3-athena-cdk-ts\u003C\u002Fcode>","Install dependencies: \u003Ccode>npm install\u003C\u002Fcode>","Deploy the CDK stack: \u003Ccode>cdk deploy\u003C\u002Fcode>","Capture AWS Lambda failed events to Amazon S3 and analyze them with Amazon Athena for error insights and patterns using asynchronous invocations.","json","AWS CDK",{"template":22},{"repoURL":23,"templateURL":24,"projectFolder":25,"templateFile":26},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Flambda-s3-athena-cdk-ts","serverless-patterns\u002Flambda-s3-athena-cdk-ts","lambda-s3-athena-cdk-ts","lib\u002Fpattern-stack.ts",{"headline":28,"text":29},"How it works",[30,31,32,33,34,35],"This pattern demonstrates how to use Amazon S3 as a failed-event destination for AWS Lambda asynchronous invocations.","A Lambda function implements business logic with success and failure scenarios.","When the Lambda function fails during asynchronous invocation, AWS automatically captures the failed event to S3 for analysis.","Amazon Athena with AWS Glue enables SQL-based analytics on failed events to identify error patterns and gain insights.","The pattern uses AWS CLI with --invocation-type Event to demonstrate asynchronous invocation.","Important: Lambda destinations only work with asynchronous invocations (S3, SNS, EventBridge) and stream-based sources (Kinesis, DynamoDB Streams, SQS). They do not trigger for synchronous invocations.","TypeScript","200",{},{"icon1":40,"icon2":45,"icon3":49,"line1":53,"line2":57},{"x":41,"y":42,"service":43,"label":44},20,50,"lambda","AWS Lambda",{"x":46,"y":42,"service":47,"label":48},55,"s3","Amazon S3",{"x":50,"y":42,"service":51,"label":52},80,"athena","Amazon Athena",{"from":54,"to":55,"label":56},"icon1","icon2","Failed-event destination",{"from":55,"to":58,"label":59},"icon3","analyze",{"bullets":61},[62,65,68,71],{"text":63,"link":64},"AWS Lambda S3 Failed-Event Destination Announcement","https:\u002F\u002Faws.amazon.com\u002Fabout-aws\u002Fwhats-new\u002F2024\u002F11\u002Faws-lambda-s3-failed-event-destination-stream-event-sources\u002F",{"text":66,"link":67},"AWS Lambda Destinations Documentation","https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-async.html#invocation-async-destinations",{"text":69,"link":70},"Amazon Athena Documentation","https:\u002F\u002Fdocs.aws.amazon.com\u002Fathena\u002Flatest\u002Fug\u002Fwhat-is.html",{"text":72,"link":73},"AWS Glue Data Catalog","https:\u002F\u002Fdocs.aws.amazon.com\u002Fglue\u002Flatest\u002Fdg\u002Fcatalog-and-crawler.html","patterns\u002Flambda-s3-athena-cdk-ts",{"text":76},[77,78,79,80,81],"Get Lambda function name: \u003Ccode>FUNCTION_NAME=$(aws cloudformation describe-stacks --stack-name LambdaS3AthenaCdkStack --query 'Stacks[0].Outputs[?OutputKey==`LambdaFunctionName`].OutputValue' --output text)\u003C\u002Fcode>","Test successful request: \u003Ccode>aws lambda invoke --function-name $FUNCTION_NAME --invocation-type Event --payload '{\"action\": \"process\", \"value\": 10}' response.json\u003C\u002Fcode>","Test failed request: \u003Ccode>aws lambda invoke --function-name $FUNCTION_NAME --invocation-type Event --payload '{\"action\": \"process\", \"value\": -5}' response.json\u003C\u002Fcode>","Verify failed events in S3: \u003Ccode>aws s3 ls s3:\u002F\u002F$(aws cloudformation describe-stacks --stack-name LambdaS3AthenaCdkStack --query 'Stacks[0].Outputs[?OutputKey==`FailedEventsBucketName`].OutputValue' --output text)\u002F --recursive\u003C\u002Fcode>","Query errors with Athena: \u003Ccode>SELECT responsepayload.errortype, COUNT(*) FROM failed_events GROUP BY responsepayload.errortype;\u003C\u002Fcode>","kcOhk311N-zD4OIgAWgkjJaHS1kSB_vcNiNvncz25ks",1778846886479]