title: Does AWS Lambda process DynamoDB stream events strictly in order?
body: <p>I'm in the process of writing a Lambda function that processes items from a DynamoDB stream.</p>
  
  <p>I thought part of the point behind Lambda was that if I have a large burst of events, it'll spin up enough instances to get through them concurrently, rather than feeding them sequentially through a single instance. As long as two events have a different key, I am fine with them being processed out of order.</p>
  
  <p>However, I just read this page on <a href="https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html" rel="noreferrer">Understanding Retry Behavior</a>, which says:</p>
  
  <blockquote>
    <p>For stream-based event sources (Amazon Kinesis Data Streams and DynamoDB streams), AWS Lambda polls your stream and invokes your Lambda function. Therefore, if a Lambda function fails, AWS Lambda attempts to process the erring batch of records until the time the data expires, which can be up to seven days for Amazon Kinesis Data Streams. The exception is treated as blocking, and AWS Lambda will not read any new records from the stream until the failed batch of records either expires or processed successfully. This ensures that AWS Lambda processes the stream events in order.</p>
  </blockquote>
  
  <p>Does "AWS Lambda processes the stream events in order" mean Lambda cannot process multiple events concurrently? Is there any way to have it process events from distinct keys concurrently?</p>