I have setup streams for my dynamo tables. I was following the example program in the documentation for reading the data from the streams(http://docs.aws.amazon.com/amazondy
I'm repeating my answer to the same question you posted on AWS Forums here:
The nextIterator will not become null as long as the shard is open and is actively receiving possible future updates. Once the shard closes and the last record has been traversed, then your loop could exit and indicate there it is no longer possible to get more records from the shard.
Please refer to our documentation here: http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/model/GetRecordsResult.html#getNextShardIterator()
"If set to null, the shard has been closed and the requested iterator will not return any more data."
Hope that helps, thanks for your interest in DynamoDB!