当前位置: 首页 > 知识库问答 >
问题:

我如何触发已经在blob中的blob触发的azure函数?

龚鸿雪
2023-03-14

我有一个azure函数,由上传到特定容器的任何新blob(图像)触发。这些图像然后被存储在这个blob存储容器中。现在我改变了我的函数并重新部署它,我希望我的azure函数能够在所有这些(已经存储的)图像上重新运行。由于该功能是blob触发的,现在我只是手动重新上传存储容器中的相同图像,但随着图像数据的增加,这样做变得越来越不可行。

函数中的Blob触发器如下所示:

def main(myblob: func.InputStream, doc: func.Out[func.Document]):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")

    blob_val = myblob.read()
    .
    .
    .

它的解决方案是什么?

谢谢你。

共有1个答案

王凯旋
2023-03-14

不能利用 HTTP 请求正文,然后将值提供给 Blob 的输入绑定。另一个选项是在 HTTP 请求中包含参数,然后在 Blob 输入绑定的路径中使用该参数。

如果在函数的HTTP请求参数中未正确传递blob名称,则它将不会像您将函数定义为接收InputStream那样执行。

HTTP请求URL:HTTP://{ yourfunctionapp }/API/HTTP trigger 1?blobname=sample.txt

如果示例文本文件不在所配置的存储帐户的容器输入中,则您的函数将失败,这意味着如果输入的blob名称不正确,将返回500错误。

def main(req: func.HttpRequest, i*_nputblob: func.InputStream_*) -> func.HttpResponse:

函数. json

{
   "scriptFile": "__init__.py",
   "bindings": [
     {
       "authLevel": "anonymous",
       "type": "httpTrigger",
       "direction": "in",
       "name": "req",
       "methods": [
         "get",
         "post"
       ]
     },
     {
       "name": "inputblob",
       "type": "blob",
       "path": "input/{blobname}",
       "connection": "AzureWebJobsStorage",
       "direction": "in"
     },
     {
       "type": "http",
       "direction": "out",
       "name": "$return"
     }
   ]
 }

或者,您只能使用HTTP输入绑定,并且您必须开发自己的代码来通过HTTP主体输入与存储服务进行通信

 类似资料:
  • 我有两个blob触发器,我想触发。一个有效,一个无效! 我使用Azure Storage Explorer来确保blob被上传到每个blob,< code>scanFiles永远不会触发,而< code>scanExports似乎总是会触发。 问题:什么会导致某些blob无法触发Azure函数?

  • 我是Azure Function应用程序中blob触发器的新手,需要一些帮助。我正在努力寻找有关如何重命名触发该函数的blob的资源。 我有一个函数应用程序,当一个新的blob被上传到容器时触发,文件被处理,我需要一种方法来将其“标记”为已处理,因此我想重命名blob。 这是我的职责: 我该如何重命名该文件?在这种情况下有可能吗?

  • 如果你使用blob存储触发器阅读Azure WebJobs上的留档,它们会提到这不是很可靠: WebJobs SDK扫描日志文件以查看新的或更改的blob。这个过程不是实时的;在创建blob后的几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;无法保证所有事件都将被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受blob触发器的速度和可靠性限制,建议

  • 我使用blob触发器读取blob内容,作为pandas DF进行处理,并将blob附加到我使用的Azure SQL server。 blob触发器没有按预期工作,因此我将main函数中的所有代码都定义为: 但是,我得到了以下错误: 有人可以帮助我找到此问题的原因吗? function.json的配置如下:

  • 有一个Azure函数,当HTML文件被放入Azure blob存储时会被触发。该函数打开HTML文件,并将其转换为JSON。有一小部分触发文件(不到1%)会导致以下异常: Microsoft.WindowsAzure.Storage.StorageException blob的放置触发了第二个函数,它改变了文件的内容类型,但是我不确定这是否会影响第一个函数打开文件的能力。 怎样做才能让Azure函

  • 我有一个通过使用powershell用ARM模板创建的azure函数。 函数是在消耗计划上运行的blob触发器类型函数,用于将blob从源存储复制到目标存储。 当我将blob上传到源存储时,它不会被复制。这意味着功能没有被执行。 当我通过门户浏览函数应用时,将调用函数并按预期执行所需的操作。此后,它工作正常。仅当函数应用最初由 Powershell 脚本使用 ARM 模板部署时,才会发生这种情况。