Azure Function - Blob 触发器,如何重命名触发函数的 blob?

Azure Function - Blob trigger, how to rename blob that triggered function?

我不熟悉 Azure 函数应用程序中的 blob 触发器,需要一些帮助。 我正在努力寻找有关如何重命名触发函数的 blob 的资源。

我有一个函数应用程序,当一个新的 blob 上传到容器时触发,文件被处理,我需要一种方法来'mark'它被处理,因此我想重命名斑点。

这是我的功能:

[FunctionName("ProcessFile")]
public async Task Run([BlobTrigger("storage-test-container/{name}", Connection = "BlobConnection")] Stream myBlob
    , [Blob("storage-test-container/{name}", FileAccess.Write)] Stream outboundBlob, string name, ILogger log)
{
    using (var reader = new StreamReader(myBlob))
    {
        var textAsString = await reader.ReadToEndAsync();

        // Process text then rename file ...
    }

}

我该如何重命名文件?在这种情况下甚至可能吗?

您可以使用触发器路径中的{name}。

Console.WriteLine("This is the filename: " + name);

How would I go about renaming the file?

考虑到本地不支持重命名 blob,您需要做的是用不同的名称复制源 blob,然后将其删除。这相当于重命名一个 blob。

Is it even possible in this scenario?

虽然技术上可行,但我不推荐这样做。当您复制 blob 时,将创建一个新的 blob,这将再次触发您的函数。因此,您将陷入无限循环。

更好的方法是创建一个单独的 blob 容器(例如 storage-test-container-processed),然后将源 blob 复制到此容器,并在成功复制 blob 后将其删除。本质上,您将移动一个 blob 而不是重命名它。