azure-blob-storage - 当文件在 Blob 存储中被修改时自动触发快照
问题描述
我使用 Azure Blob 存储来备份数据。备份由从 CosmosDB 中提取的 Azure 数据工厂完成。存储备份数据的结构是:数据存储帐户->容器->我每天保存的 JSON 文件。但是,备份只是覆盖,我将无法下载以前的数据。
我意识到有一个创建快照按钮,当我选择 JSON 文件(Blob)并单击该按钮时,我可以获得 JSON 文件的快照,如何在这些 JSON 上的时间戳发生更改时自动生成快照文件?换句话说,一旦数据工厂打包了今天的数据,就会创建今天的快照。
解决方案
您可以使用 blob trigger创建一个azure 函数。如果文件被修改,函数将被执行,你应该把快照逻辑放在函数中。
这是示例代码(注意:对于第一个参数myBlob
,将类型更改为CloudBlockBlob
):
public static class Function1
{
[FunctionName("Function1")]
public static void Run([BlobTrigger("images/{name}", Connection = "AzureWebJobsStorage")]CloudBlockBlob myBlob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name}");
log.LogInformation("take snapshots for blob: " + name);
myBlob.SnapshotAsync().Wait();
}
}
这是 local.settings.json 中的设置:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "connection string of the azure storage account",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
推荐阅读
- laravel - Laravel:中间件可以接受路由输入吗?
- swift - 我可以返回 switch 语句的 case 值吗?斯威夫特 4
- javascript - javascript中的模板文字
- python - 为深度学习模型提供可接受时间的 pandas 数据帧的合理最大大小是多少?
- nativescript - Nativescript - 如何在应用程序中不显示崩溃日志?
- firebase - Firestore 规则模拟器 - 资源未定义
- haskell - 在 Haskell 中结合 ST 和 List 单子
- vuejs2 - vue-router 无法访问我的组件
- angular - 将不同的数据传递给Angular中的组件
- image - Golang 无法从 S3 读取 PNG