【问题标题】:Create a temporary blob on Azure Blob Storage在 Azure Blob 存储上创建临时 Blob
【发布时间】:2017-11-20 18:01:03
【问题描述】:
有没有在 Azure 上创建临时 blob,然后在上传完成后重命名它的好方法?我想实现一个原子上传,如果上传中途中止,它应该保留 blob 的原始内容。
对于“好”,我的意思是可以立即给我一个可用的 blob 名称,理想情况下是“锁定”它。对于高访问率,当另一个应用程序尝试检查相同的 blob 名称时,即使检查伪临时 blob 名称是否已经存在也可能会出现问题。
【问题讨论】:
标签:
azure
azure-storage
azure-blob-storage
【解决方案1】:
我认为您不需要进行重命名,因为方便地,blob 上传已经是原子的。块以未提交状态上传,然后最后的原子步骤通过提供其 Id 列表来提交它们。如果最后一步永远不会发生,您将根本看不到 blob(除非您明确要求“未提交的 blob”,您通常不会这样做)。参见PutBlock和PutBlockList文档中的备注
(最终,所有块 Blob 创建最终都会调用“PutBlob”(对于小 Blob),这在定义上是原子的;或者是一系列 PutBlock 调用,然后是 PutBlockList。例如,.NET 存储客户端库使用 CloubBlobStream,它调用那些 Put... 函数来完成它的工作)
【解决方案2】:
不太确定我是否理解您的用例,但您不能重命名 blob。您需要将其复制到一个新的 blob 中,以完成重命名。