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 而不是重命名它。
我不熟悉 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 而不是重命名它。