You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Storage如何通过Node.js调用Point-in-time restore恢复指定目录

提问内容

我了解块Blob的时间点恢复功能可以恢复指定目录下的所有块Blob,请问是否可以通过Node.js或其他编程语言调用该能力?
例如我的客户有数据恢复需求,我希望通过网页(API)为他们提供自助操作入口,让他们可以自行完成恢复操作。
更新:我已经找到了相关的BlobRestoreParameters接口。


解答

完全可以通过代码调用Azure块Blob的时间点恢复能力,适合封装成自助API给用户使用。你找到的BlobRestoreParameters就是Node.js SDK中对应恢复操作的参数定义,具体实现方式如下:

前置要求

在调用接口前,需要先完成存储账户的基础配置:

  • 已为目标存储账户开启块Blob的时间点恢复功能
  • 配套开启Blob软删除、Blob版本控制功能,且恢复时间点需在你配置的恢复保留期范围内

Node.js 实现示例

  1. 先安装官方依赖包:
npm install @azure/arm-storage @azure/identity
  1. 核心调用代码:
const { StorageManagementClient } = require("@azure/arm-storage");
const { DefaultAzureCredential } = require("@azure/identity");

async function restoreBlobs() {
  // 鉴权,可根据实际部署场景替换为对应鉴权方式
  const credential = new DefaultAzureCredential();
  const subscriptionId = "替换为你的Azure订阅ID";
  const client = new StorageManagementClient(credential, subscriptionId);

  // 配置恢复参数
  const restoreParams = {
    // 要恢复到的时间点,需为UTC格式时间
    timeToRestore: new Date("2024-05-20T08:00:00Z"),
    blobRanges: [
      {
        // 要恢复的Blob范围,*为通配符,示例为恢复test-container容器下data目录的所有Blob
        startRange: "test-container/data/*"
      }
    ]
  };

  // 触发恢复操作,操作为异步执行,此处等待执行完成返回结果
  const restoreOperation = await client.storageAccounts.beginRestoreBlobRangesAndWait(
    "替换为资源组名称",
    "替换为存储账户名称",
    restoreParams
  );

  return restoreOperation.status;
}

其他语言支持

除了Node.js外,Azure官方的Python、Java、C# SDK都提供了对应的恢复接口,你也可以直接调用原生REST API实现,完全适配网页端自助操作入口的封装需求。

注意事项

  • 恢复操作会覆盖目标时间点之后新增、修改、删除的对应Blob,建议在用户触发操作前增加二次确认提示,避免误操作丢失数据
  • 恢复操作为异步执行,建议在前端增加进度提示,可通过接口返回的操作ID轮询执行状态
  • 封装自助接口时需要做好权限校验,确保用户只能恢复自己有权限访问的存储范围,避免越权操作

内容的提问来源于stack exchange,提问作者Yuzuki Ayase

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:39:00