[{"data":1,"prerenderedAt":156},["ShallowReactive",2],{"content-svc-lambda-guides-serverless-stream-processing-with-lambda-4-2-KDS-lambda-intg":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":13,"menu":14,"menuType":149,"isCollapseableMenu":17,"nextDocItem":122,"previousDocItem":106,"contributorPaths":150,"contentName":155,"slug":121,"readingTime":118},"\u003Ch4>Amazon KDS as Lambda ESM\u003C\u002Fh4>\n\u003Cp>AWS Lambda can serve as a consumer that can read events from Amazon KDS and process events in a serverless fashion. You can use \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-eventsourcemapping.html\">Lambda event source mappings (ESM)\u003C\u002Fa> to read events from Amazon KDS and process the events.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-esm-poller-design.png\" alt=\"KDS poller design\">\u003C\u002Fp>\n\u003Cp>A consumer reads events from a shard in Amazon KDS. By default, the read throughput of a shard (2Mb\u002Fsec) is shared across all the consumers that are reading from a given shard. Even if there are multiple consumers reading from the same shard, the 2Mb\u002Fsec throughput is fixed. This is called as \u003Ccode>shared-throughput\u003C\u002Fcode> consumer (standard iterator). When Lambda is configured as a shared throughput-consumer, it polls each shard using HTTP protocol.\u003C\u002Fp>\n\u003Cp>For high read throughput and low latency use cases, a consumer can use \u003Ccode>enhanced fan-out\u003C\u002Fcode> which allows multiple consumers to read data from the same stream in parallel with dedicated throughput of up to 2MB\u002Fsec for each consumer. Each consumer that is registered to use \u003Ccode>enhanced fan-out\u003C\u002Fcode> receives its own read throughput per shard (up to 2MB\u002Fsec). The limit for number of consumers using enhanced fan-out is twenty per stream.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-efo.png\" alt=\"KDS EFO\">\u003C\u002Fp>\n\u003Ch4>Batching behavior\u003C\u002Fh4>\n\u003Cp>AWS Lambda has a default behavior, when integrated with Amazon KDS using event source mappings (ESM), that batches records together into a single payload that Lambda sends to your function during invocation. Lambda polls each shard in the Kinesis Data Stream and invokes your Lambda function synchronously with a payload that contains a stream of records. Lambda reads the events in batches and invokes the function to process each batch. Each batch contain records from a single shard or Kinesis Data Stream.\u003C\u002Fp>\n\u003Ch5>Batching Window\u003C\u002Fh5>\n\u003Cp>As soon as records are available, the Lambda function is invoked irrespective of number of records available. In order to avoid overly frequent invocations of a Lambda function with small batches of records, you can configure a \u003Cstrong>batching window\u003C\u002Fstrong> \u003Ccode>(MaximumBatchingWindowInSeconds)\u003C\u002Fcode>, which is the maximum amount of time (\u003Cem>up to 5minutes\u003C\u002Fem>) to gather the records into a single payload. You can also configure the size of the batch using the parameter \u003Ccode>BatchSize\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-batching.png\" alt=\"KDS ESM Batching\">\u003C\u002Fp>\n\u003Cp>Lambda invokes your function when \u003Cstrong>any\u003C\u002Fstrong> of the following criteria is met:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>batching window expires\u003C\u002Fli>\n\u003Cli>batch size is met\u003C\u002Fli>\n\u003Cli>Lambda Payload size limit is reached (6MB)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Scaling and Concurrency\u003C\u002Fh4>\n\u003Cp>By default, there is only one instance of synchronous Lambda invocation per batch per shard. You can control the concurrency with \u003Ccode>ParallelizationFactor\u003C\u002Fcode> enabling you to process multiple batches (up to 10 batches) from each shard in parallel. Lambda still ensures in-order processing of events at the partition-key level.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-concurrency.png\" alt=\"KDS ESM Concurrency\">\n\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-concurrency-2.png\" alt=\"KDS ESM Concurrency-2\">\u003C\u002Fp>\n\u003Cp>Please refer to this \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fnew-aws-lambda-scaling-controls-for-kinesis-and-dynamodb-event-sources\u002F\">blog\u003C\u002Fa> to dive deep into the scaling controls to handle high-traffic as well as low-traffic scenarios.\u003C\u002Fp>\n\u003Ch4>Event filtering\u003C\u002Fh4>\n\u003Cp>When you configure Amazon KDS as a source using AWS Lambda ESM, you can make use of Lambda event filtering to control which records from the stream is sent to your function by Lambda. For example, you can filter on certain parameters contained in the messages and process only those messages that satisfies the criteria. Up to five different event filters can be applied, which are then evaluated as logical OR over messages. The messages that satisfy the criteria are sent to the Lambda function in the next payload and the messages that do not satisfy any criteria are discarded.\u003C\u002Fp>\n\u003Cp>A filter is defined using a \u003Ccode>FilterCriteria\u003C\u002Fcode> object which has a list of \u003Ccode>Filters\u003C\u002Fcode>. Each \u003Ccode>Filter\u003C\u002Fcode> is defined as a \u003Ccode>Pattern\u003C\u002Fcode> that filters the events. The structure of the \u003Ccode>FilterCriteria\u003C\u002Fcode> is given below.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n   &quot;Filters&quot;: [\n        {\n            &quot;Pattern&quot;: &quot;{ \\&quot;Metadata1\\&quot;: [ rule1 ], \\&quot;data\\&quot;: { \\&quot;Data1\\&quot;: [ rule2 ] }}&quot;\n        }\n    ]\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>In JSON representation, the above \u003Ccode>Pattern\u003C\u002Fcode> looks like below.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\n    &quot;Metadata1&quot;: [ rule1 ],\n    &quot;data&quot;: {\n        &quot;Data1&quot;: [ rule2 ]\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The events can be filtered on metadata parameters and data parameters individually or together. Please note that the format of these parameters vary by the AWS service being used.\u003C\u002Fp>\n\u003Ch5>Handling of records that don&#39;t meet the filter criteria\u003C\u002Fh5>\n\u003Cp>When using Lambda filters, the events that don&#39;t satisfy the filter criteria are handled differently depending on the event source.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>In \u003Cstrong>Amazon SQS\u003C\u002Fstrong>, Lambda removes the messages from the queue if they do not match any criteria defined.\u003C\u002Fli>\n\u003Cli>In \u003Cstrong>Kinesis\u003C\u002Fstrong> and \u003Cstrong>DynamoDB\u003C\u002Fstrong>, the messages that do not satisfy the any criteria, once processed, are not deleted from the source. These records follow the retention period configured and are deleted after the retention period.\u003C\u002Fli>\n\u003Cli>In \u003Cstrong>Amazon MSK, self-managed Apache Kafka\u003C\u002Fstrong> and \u003Cstrong>Amazon MQ\u003C\u002Fstrong>, Lambda drops messages that don&#39;t match all fields included in the filter. For self-managed Apache Kafka, Lambda commits offsets for matched and unmatched messages after successfully invoking the function. For Amazon MQ, Lambda acknowledges matched messages after successfully invoking the function and acknowledges unmatched messages when filtering them.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For more details, please refer to \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-eventfiltering.html\">Lambda Event Filtering\u003C\u002Fa> documentation.\u003C\u002Fp>\n\u003Cp>Watch the following video for a better understanding of Kinesis as Lambda Event Source Mapping.\u003C\u002Fp>\n\u003Ciframe width=\"560\" height=\"315\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FkSppyMr6sXA?si=I75Qm9XhASXxi3Lh\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen>\u003C\u002Fiframe>\n",{"title":6,"weight":7,"learningGoals":8,"resources":10},"Amazon Kinesis Data Streams - Integration with AWS Lambda",62,[9],"Amazon KDS integration with AWS Lambda for Serverless stream processing",[11,12],"https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-eventsourcemapping.html#invocation-eventsourcemapping-batching","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fnew-aws-lambda-scaling-controls-for-kinesis-and-dynamodb-event-sources\u002F","#### Amazon KDS as Lambda ESM\n\nAWS Lambda can serve as a consumer that can read events from Amazon KDS and process events in a serverless fashion. You can use [Lambda event source mappings (ESM)](https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-eventsourcemapping.html) to read events from Amazon KDS and process the events.\n\n![KDS poller design](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-esm-poller-design.png)\n\nA consumer reads events from a shard in Amazon KDS. By default, the read throughput of a shard (2Mb\u002Fsec) is shared across all the consumers that are reading from a given shard. Even if there are multiple consumers reading from the same shard, the 2Mb\u002Fsec throughput is fixed. This is called as `shared-throughput` consumer (standard iterator). When Lambda is configured as a shared throughput-consumer, it polls each shard using HTTP protocol.\n\nFor high read throughput and low latency use cases, a consumer can use `enhanced fan-out` which allows multiple consumers to read data from the same stream in parallel with dedicated throughput of up to 2MB\u002Fsec for each consumer. Each consumer that is registered to use `enhanced fan-out` receives its own read throughput per shard (up to 2MB\u002Fsec). The limit for number of consumers using enhanced fan-out is twenty per stream.\n\n![KDS EFO](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-efo.png)\n\n#### Batching behavior\n\nAWS Lambda has a default behavior, when integrated with Amazon KDS using event source mappings (ESM), that batches records together into a single payload that Lambda sends to your function during invocation. Lambda polls each shard in the Kinesis Data Stream and invokes your Lambda function synchronously with a payload that contains a stream of records. Lambda reads the events in batches and invokes the function to process each batch. Each batch contain records from a single shard or Kinesis Data Stream.\n\n##### Batching Window\n\nAs soon as records are available, the Lambda function is invoked irrespective of number of records available. In order to avoid overly frequent invocations of a Lambda function with small batches of records, you can configure a **batching window** `(MaximumBatchingWindowInSeconds)`, which is the maximum amount of time (_up to 5minutes_) to gather the records into a single payload. You can also configure the size of the batch using the parameter `BatchSize`.\n\n![KDS ESM Batching](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-batching.png)\n\nLambda invokes your function when **any** of the following criteria is met:\n\n- batching window expires\n- batch size is met\n- Lambda Payload size limit is reached (6MB)\n\n#### Scaling and Concurrency\n\nBy default, there is only one instance of synchronous Lambda invocation per batch per shard. You can control the concurrency with `ParallelizationFactor` enabling you to process multiple batches (up to 10 batches) from each shard in parallel. Lambda still ensures in-order processing of events at the partition-key level.\n\n![KDS ESM Concurrency](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-concurrency.png)\n![KDS ESM Concurrency-2](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fkds\u002Fassets\u002Fkds-4-2-concurrency-2.png)\n\nPlease refer to this [blog](https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fnew-aws-lambda-scaling-controls-for-kinesis-and-dynamodb-event-sources\u002F) to dive deep into the scaling controls to handle high-traffic as well as low-traffic scenarios.\n\n#### Event filtering\n\nWhen you configure Amazon KDS as a source using AWS Lambda ESM, you can make use of Lambda event filtering to control which records from the stream is sent to your function by Lambda. For example, you can filter on certain parameters contained in the messages and process only those messages that satisfies the criteria. Up to five different event filters can be applied, which are then evaluated as logical OR over messages. The messages that satisfy the criteria are sent to the Lambda function in the next payload and the messages that do not satisfy any criteria are discarded.\n\nA filter is defined using a `FilterCriteria` object which has a list of `Filters`. Each `Filter` is defined as a `Pattern` that filters the events. The structure of the `FilterCriteria` is given below.\n\n```\n{\n   \"Filters\": [\n        {\n            \"Pattern\": \"{ \\\"Metadata1\\\": [ rule1 ], \\\"data\\\": { \\\"Data1\\\": [ rule2 ] }}\"\n        }\n    ]\n}\n```\n\nIn JSON representation, the above `Pattern` looks like below.\n\n```\n{\n    \"Metadata1\": [ rule1 ],\n    \"data\": {\n        \"Data1\": [ rule2 ]\n    }\n}\n```\n\nThe events can be filtered on metadata parameters and data parameters individually or together. Please note that the format of these parameters vary by the AWS service being used.\n\n##### Handling of records that don't meet the filter criteria\n\nWhen using Lambda filters, the events that don't satisfy the filter criteria are handled differently depending on the event source.\n\n- In **Amazon SQS**, Lambda removes the messages from the queue if they do not match any criteria defined.\n- In **Kinesis** and **DynamoDB**, the messages that do not satisfy the any criteria, once processed, are not deleted from the source. These records follow the retention period configured and are deleted after the retention period.\n- In **Amazon MSK, self-managed Apache Kafka** and **Amazon MQ**, Lambda drops messages that don't match all fields included in the filter. For self-managed Apache Kafka, Lambda commits offsets for matched and unmatched messages after successfully invoking the function. For Amazon MQ, Lambda acknowledges matched messages after successfully invoking the function and acknowledges unmatched messages when filtering them.\n\nFor more details, please refer to [Lambda Event Filtering](https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-eventfiltering.html) documentation.\n\nWatch the following video for a better understanding of Kinesis as Lambda Event Source Mapping.\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FkSppyMr6sXA?si=I75Qm9XhASXxi3Lh\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen>\u003C\u002Fiframe>\n",[15,46,103],{"title":16,"collapsible":17,"isCollapsed":18,"content":19},"Introduction",false,true,[20,26,36],{"title":16,"order":21,"time":22,"path":23,"id":24,"link":25},1,"2 min","1-introduction","1-introduction.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F1-introduction",{"title":27,"order":28,"callout":29,"time":22,"path":33,"id":34,"link":35},"Getting started with streaming data",2,{"title":30,"description":31,"link":32},"Watch the video","This video will help you get started with Amazon Kinesis Data Streams, a massively scalable, durable, and low-cost streaming data service that enables you to continuously capture gigabytes of data per second from hundreds of thousands of sources, such as website clickstreams, database event streams, financial transactions, social media feeds, IT logs, and location-tracking events.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=1I1DcJvmd4w","2-getting-started","2-getting-started.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F2-getting-started",{"title":37,"order":38,"callout":39,"time":22,"path":43,"id":44,"link":45},"Event source mapping for Lambda",3,{"title":40,"description":41,"link":42},"Read the docs","Refer to the AWS Lambda documentation for detailed explanations of Lambda event source mappings","https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Finvocation-eventsourcemapping.html","3-event-source-mapping","3-event-source-mapping.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F3-event-source-mapping",{"title":47,"collapsible":17,"isCollapsed":18,"content":48},"Streaming processing with MSK",[49,68,76,83,90,96],{"title":50,"order":51,"youtubeVideoID":52,"resources":53,"callout":61,"time":22,"path":65,"id":66,"link":67},"MSK as event source for Lambda",51,"JKvIypfEiok",[54,58],{"link":55,"type":56,"text":57},"https:\u002F\u002Faws.amazon.com\u002Flambda\u002F","Text","AWS Lambda",{"link":59,"type":56,"text":60},"https:\u002F\u002Faws.amazon.com\u002Fserverless\u002F","Serverless on AWS",{"title":62,"description":63,"link":64},"Follow the Kafka with Lambda learning guide","Refer to the deep dive learning guide for using Kafka with Lambda","https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fguides\u002Flambda-kafka\u002Fintroduction","msk-stream-processing","msk-stream-processing.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fmsk-stream-processing",{"title":69,"order":70,"callout":71,"time":72,"path":73,"id":74,"link":75},"Deep dive into Lambda ESM for MSK",50,{"title":62,"description":63,"link":64},"1 min","msk-esm-deep-dive","msk-esm-deep-dive.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fmsk-esm-deep-dive",{"title":77,"order":78,"callout":79,"time":22,"path":80,"id":81,"link":82},"Ordered processing of messages",52,{"title":62,"description":63,"link":64},"msk-ordered-processing","msk-ordered-processing.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fmsk-ordered-processing",{"title":84,"order":85,"callout":86,"time":72,"path":87,"id":88,"link":89},"Scaling of consumers",54,{"title":62,"description":63,"link":64},"msk-scaling-consumers","msk-scaling-consumers.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fmsk-scaling-consumers",{"title":91,"order":92,"time":72,"path":93,"id":94,"link":95},"Authentication options for Lambda consumers",56,"msk-lambda-auth-options","msk-lambda-auth-options.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fmsk-lambda-auth-options",{"title":97,"order":98,"callout":99,"time":72,"path":100,"id":101,"link":102},"Error handling in Lambda functions",58,{"title":62,"description":63,"link":64},"msk-lambda-error-handling","msk-lambda-error-handling.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002Fmsk-lambda-error-handling",{"title":104,"collapsible":17,"isCollapsed":17,"content":105},"Streaming processing with KDS",[106,115,122,133,141],{"title":107,"weight":108,"learningGoals":109,"time":111,"path":112,"id":113,"link":114},"Kinesis Data Streams (KDS) - Key Concepts and Terminologies",60,[110],"Learn key concepts and terminologies of Amazon KDS","4 min","4-1-KDS-key-concepts-terms","4-1-KDS-key-concepts-terms.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F4-1-KDS-key-concepts-terms",{"title":6,"weight":7,"learningGoals":116,"resources":117,"time":118,"path":119,"id":120,"link":121},[9],[11,12],"5 min","4-2-KDS-lambda-intg","4-2-KDS-lambda-intg.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F4-2-KDS-lambda-intg",{"title":123,"weight":124,"learningGoals":125,"resources":127,"time":129,"path":130,"id":131,"link":132},"Amazon KDS - Error handling with Lambda ESM",64,[126],"How to handle errors when configuring Amazon KDS as Lambda ESM",[128],"https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Fwith-kinesis.html","3 min","4-3-KDS-lambda-error-handling","4-3-KDS-lambda-error-handling.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F4-3-KDS-lambda-error-handling",{"title":134,"weight":135,"learningGoals":136,"time":118,"path":138,"id":139,"link":140},"Kinesis Data Streams Scaling- Key Concepts and Terminologies",66,[137],"Learn key concepts and terminologies of Amazon KDS Scaling","4-4-KDS-scaling","4-4-KDS-scaling.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F4-4-KDS-scaling",{"title":142,"weight":143,"learningGoals":144,"time":118,"path":146,"id":147,"link":148},"Kinesis Data Streams Monitoring",68,[145],"Learn Amazon KDS & Lambda monitoring methodologies","4-5-KDS-monitoring","4-5-KDS-monitoring.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Fserverless-stream-processing-with-lambda\u002F4-5-KDS-monitoring","LIST",[151,152,153,154],"content\u002Fcontributors\u002Fmithun-mallick.json","content\u002Fcontributors\u002Fkevin-schwarz.json","content\u002Fcontributors\u002Fnaren-sithambaram.json","content\u002Fcontributors\u002Fprasanna-s-krishnan.json","Serverless Stream Processing with Lambda",1790159721018]