我正在尝试通过使用 Azure Rest API(使用 win 8 应用程序)来尝试读取另一个工作角色写入的 blob 来实现一些自动化。这个另一个日志工作者角色是将所有这些块“PUT”到一个blob,然后在时间的顶部提交所有这些块,压缩它们然后开始一个新的块。我不拥有这个记录器,并且想尝试在它周围做这件事而不打扰任何事情。
这是我正在做的事情:
- 从该 blob 文件中获取所有未提交块的列表
- 将该列表提交到该 blob,然后根据需要读取/转换
我目前的方法对我有用,但它会导致记录器出现问题,可能会使实例崩溃,并且在提交 blob 时肯定会丢失数据。为了防止这种情况,我一直在尝试将这些未提交的块提交到另一个临时 blob,然后从那里读取它,但未能成功。
当我调用 PutBlockList 时,它总是返回 400:无效的阻止列表。使用我从中获得未提交块的 blob 文件时,同样的调用会成功。如果未提交的块列表为空,它也会成功处理临时 blob。
我试图复制 blob,但它失败了 404: BlobNotFound 因为在提交 blob 之前它没有内容。
我尝试过快照,但文档指出它省略了未提交的块。也没有关于获取未提交块的实际数据而不仅仅是块标识的文档。
那么是否可以将 blob 的未提交块提交到不同的 blob?