【问题标题】:Azure Function BlobTrigger fires, but blob not foundAzure Function BlobTrigger 触发,但未找到 blob
【发布时间】:2019-10-23 07:28:49
【问题描述】:

我终于用下面的代码重现了这个问题。 我只是用 blob 触发器触发了一个持久函数,并在其中一个活动函数中读取了 blob。但是...当我读取 blob 时,我收到 blob 不存在的错误。

有人可以解释我在这里做错了什么吗?

代码:

[FunctionName("BlobTrigger")]
public static async void Trigger(
[BlobTrigger("incoming-blob/{filename}", Connection = "")]Stream myBlob,
[OrchestrationClient]DurableOrchestrationClient starter,
string filename,
ILogger log)
{
    var instanceId = await starter.StartNewAsync("Orchestrator", filename);
}

[FunctionName("Orchestrator")]
public static async Task RunOrchestrator(
    [OrchestrationTrigger] DurableOrchestrationContext context)
{
    var filename = context.GetInput<string>();
    await context.CallActivityAsync("Read_Blob", filename);
}

[FunctionName("Read_Blob")]
public static async Task Activity(
    [ActivityTrigger] string filename,
    [Blob("incoming-blob")] CloudBlobContainer container,
    ILogger log)
{
    var stream = new MemoryStream();
    var blob = container.GetBlockBlobReference(filename);
    await blob.DownloadToStreamAsync(stream);
    //EXCEPTION THROWN AT ABOVE LINE.
    stream.Dispose();
}

【问题讨论】:

  • 顺便说一句...这显然是对我们工作的简化。答案在于使用 blobContainer 绑定,而不是直接绑定到 blob 内容或 Stream。即便如此,这应该有效。当文件不可访问时,blob 触发器可能会触发,这太疯狂了。
  • 应该是 var blob = container.GetBlockBlobReference(filename); 而不是 var blob = container.GetBlockBlobReference("filename"); 还是只是一个错字?
  • 最后一条评论:你应该使用 EventGridTrigger 而不是 BlobTrigger:docs.microsoft.com/en-us/azure/storage/blobs/….
  • 是的,只是一个错字
  • Thomas... 我花了一个上午的时间来了解 EventTrigger,当然可以使用它来代替,但是,BlobTrigger 不只是一个过滤的 EventTrigger 吗?是什么让您说这会是更好的选择?

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


【解决方案1】:

看起来您正在尝试使用container.GetBlockBlobReference("filename") 而不是container.GetBlockBlobReference(filename) 使用传入的参数[ActivityTrigger] string filename

【讨论】:

  • @KickinMhl 并且您仍然遇到异常?
  • 不经常......尤其是在这个基本的代码示例中,但是,当有一堆流量时,它似乎会降级,然后我们会得到异常。例如,现在,这很好用。但是在我们进行一些小的负载测试并遇到问题的那一天,我部署了这段代码并且遇到了同样的问题。
猜你喜欢
  • 1970-01-01
  • 2021-02-26
  • 2020-11-26
  • 2019-12-17
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
相关资源
最近更新 更多