我刚刚将数十GB的文件上传到Azure CloudStorage。每个文件都应由FunctionApp拾取并处理,以响应BlobTrigger
:
[FunctionName(nameof(ImportDataFile))]
public async Task ImportDataFile(
// Raw JSON Text file containing data updates in expected schema
[BlobTrigger("%AzureStorage:DataFileBlobContainer%/{fileName}", Connection = "AzureStorage:ConnectionString")]
Stream blobStream,
string fileName)
{
//...
}
这通常可以正常工作,但是愚蠢的是,在将所有文件上传到我们的UAT系统之前,我没有对该功能进行最终测试……而上传时出现问题:(
[上传花了几天时间(由于CoViD-19而在我的国内互联网上行链路上运行,所以我真的不想再做一次。
有某种方法可以“重播” BlobUpload触发器吗?,以便函数再次触发,就好像我只是重新上传文件...而无需再次传输任何数据!
根据此link
Azure Functions将Blob收据存储在一个名为 功能应用程序的Azure存储帐户中的
link
(由应用程序设置azure-webjobs-hosts
定义)。要强制处理Blob,请删除该Blob的Blob收据 从azure-webjobs-hosts容器中手动]]。在重新处理时 可能不会立即发生,因此可以保证稍后发生 及时。 要立即重新处理,请输入scaninfo blob 可以更新azure-webjobs-hosts / blobscaninfo。最后的斑点 扫描LatestScan属性后修改的时间戳 再次。
我发现有一个hacky-AF解决方案,它可以重新处理现有文件:
如果您不花钱在文件名上,我发现了一种解决方法: