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 实现示例
- 先安装官方依赖包:
npm install @azure/arm-storage @azure/identity
- 核心调用代码:
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
相关产品推荐
相关产品推荐

