**Describe the situation**

The author implemented it but enabled only for DiskS3.
CC @excitoon 
{
public:
    explicit Impl(const std::vector<String> & keys_) : keys(keys_), keys_iter(keys.begin())
    {
    }
    String next()
    {
        std::lock_guard lock(mutex);
        if (keys_iter == keys.end())
            return "";
        auto key = *keys_iter;
        ++keys_iter;
        return key;
    }
private:
    std::mutex mutex;
    Strings keys;
    Strings::iterator keys_iter;
};
StorageS3Source::KeysIterator::KeysIterator(const std::vector<String> & keys_) : pimpl(std::make_shared<StorageS3Source::KeysIterator::Impl>(keys_))