# Shard Iterator Expires Unexpectedly

* A **shard is a uniquely identified sequence of data records in a stream**.<br>
* A **stream is composed of one or more shards**, each of which provides a fixed unit of capacity.<br>
* A **new shard iterator is returned by every GetRecords request (as `NextShardIterator`)**.<br>
  * You then **use in the next GetRecords request (as `ShardIterator`)**.<br>
* **Typically, this shard iterator does not expire before you use it**.<br>
  * However, you **may find that shard iterators expire because you have not called GetRecords for more than 5 minutes**, or **because you've performed a restart of your consumer application**.<br>
* If the shard iterator expires immediately, before you can use it, this **might indicate that the DynamoDB table used by Kinesis does not have enough capacity to store the lease data**.<br>
  * This situation is **more likely to happen if you have a large number of shards**.<br>
    * To solve this problem, **increase the write capacity assigned to the shard table**.
