为现有文件重播/重复/重新触发 Azure BlobStorage 函数触发器

Rei*_*l-- 2 azure azure-storage-blobs azure-functions azure-triggers

我刚刚将数十 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)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

这在一般情况下有效,但愚蠢的是,在将所有文件上传到我们的 UAT 系统之前,我没有对该功能进行最终测试......并且上传存在问题:(

上传花了几天时间(由于 CoViD-19,我在国内互联网上行链路上运行)所以我真的不想重新这样做。

有什么方法可以“重放” BlobUpload 触发器?以便该功能再次触发,就像我刚刚重新上传文件一样......而不必再次传输任何数据!

Gau*_*tri 6

按照这个 link

Azure Functions 将 blob 收据azure-webjobs-hosts存储在函数应用(由应用设置定义AzureWebJobsStorage)的 Azure 存储帐户中命名的容器 中。

要强制重新处理 blob,请手动从 azure-webjobs-hosts 容器中删除该 blob 的 blob 收据。虽然重新处理可能不会立即发生,但它可以保证在稍后的时间点发生。要立即重新处理,可以更新 azure-webjobs-hosts/blobscaninfo 中的 scaninfo blob。将再次扫描具有上次修改时间戳的最新扫描属性之后的任何 blob


Rei*_*l-- 5

我找到了一个 hacky-AF 解决方法,它重新处理现有文件:

如果将元数据添加到 blob,则似乎会重新触发 BlobStorage 函数触发器。

在 Azure 存储资源管理器中访问,但右键单击 Blob > 属性 > 添加元数据。

我设置键:“ForceRefresh”,值“test”。