【问题标题】:Azure Function Blob Trigger CloudBlockBlob bindingAzure 函数 Blob 触发器 CloudBlockBlob 绑定
【发布时间】:2018-08-29 07:28:19
【问题描述】:

当文件上传到 Blob 存储时,我触发了以下 Azure 函数

[FunctionName("ImageAnalysis")]
    public static async void Run(
        [BlobTrigger("imageanalysis/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob, 
        string name, 
        TraceWriter log)
    {
        log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
    }

我想处理已上传的 Blob,因此理想情况下我希望将其作为 CloudBlockBlob 而不是 Stream。然后我可以做一些工作,然后删除 blob。

myBlob.DeleteIfExists()

是否有一种简单的方法可以将我的 Stream 转换或转换为 CloudBlockBlob,或者我是否需要使用输入/输出绑定或其他方式?

查看文档,我看到了使用 CloudBlockBlob 的示例,但我似乎无法让它工作,所以认为我遗漏了什么?

【问题讨论】:

  • 请扩展“我似乎无法让它工作”。支持CloudBlockBlob

标签: azure azure-blob-storage azure-functions


【解决方案1】:

使用此语法进行绑定。诀窍是在属性中指定FileAccess.ReadWrite。出于某种原因,文档相当混乱地将其称为“inout”。

[Blob("imageanalysis/{name}", FileAccess.ReadWrite, Connection = "AzureWebJobsStorage")] CloudBlockBlob blob, string name

【讨论】:

  • 我一定是做错了什么我不断收到 Microsoft.Azure.WebJobs.Host:错误索引方法“ImageAnalysis.Run”。 Microsoft.Azure.WebJobs.Host:无法将 Blob 绑定到类型“Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob”。
  • 忽略我,我有错误版本的 Microsoft.WindowsAzure.Storage.Blob 回滚到 7.2.1 已修复它
  • 很高兴你成功了。一些 Azure 命名空间和程序集可能会变得非常混乱(尤其是在新旧队列 API 方面)。
  • 那么,解决方案是将库回滚到旧版本吗?我认为这不是一个合适的解决方案。
  • 由于您不控制部署平台本身,使用 Azure Functions 通常比看起来理想的方式更“做有效的事情”。 (坦率地说,由于对旧的 JSON.NET 包的硬依赖和其他令人头疼的问题,我们暂时放弃了它们。)
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 2021-10-08
相关资源
最近更新 更多