带有blobtrigger的Azure函数-更新元数据

时间:2019-09-05 17:52:31

标签: azure-functions azure-storage-blobs

我正在寻找一个示例或IP,用于在Blob上传时更新其元数据。感谢所有帮助。

我具有以下功能:

public static void Run([BlobTrigger("types/{name}", Connection = "StorageConnection")]Stream myBlob, string name, ILogger log)
{
}

1 个答案:

答案 0 :(得分:1)

您可以使用触发器获取ICloudBlob而不是流。
在Azure函数的blob触发器上检查official documentation

基本上,您的代码将如下所示:

public static void Run(
    [BlobTrigger("types/{name}", Connection = "StorageConnection")] ICloudBlob myBlob, 
    string name, 
    ILogger log)
{
    if (blobTrigger.Metadata.ContainsKey("MyKey"))
        return;

    blobTrigger.Metadata["MyKey"] = "MyValue";
    await blobTrigger.SetMetadataAsync();
}

但是有一个问题。更新元数据后,基本上您将再次上传该Blob,这将再次触发您的功能。

我添加了一个简单的检查,以查看是否已经添加了我的元数据键,以避免无限循环。
当然,您可能会以自己的方式知道自己是否只是更新元数据的人。最坏的情况是,您必须使用自己的标志来指示上载是通过您的函数进行的。

希望有帮助。 :)