Watch out for the limit on the number of concurrent invalidation batches. Youll probably want to scan for "pending" PUT objects and try aggregate them in to an invalidation batch.
Good point. I guess this would need to be "S3 PUT event triggers code which adds object name to a list and starts a timer"; "timer expiry triggers code which issues a batch invalidate for the list (and empties the list)".
I wonder if there's any good way to generate that timer expiry event...