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

在azure函数上发布时无法运行blob触发器

宇文元明
2023-03-14

我在Visual Studio中创建了一个简单的blob触发器,init.py如下

import logging

import azure.functions as func


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

function.json如下

{
  "scriptFile": "__init__.py",
  "bindings": [
     {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "mycontainer/{name}",
      "connection": "AzureWebJobsStorage"
     }
    ]
}

local.settings。json如下所示

{
  "IsEncrypted": false,
  "Values": {
  "FUNCTIONS_WORKER_RUNTIME": "python",
  "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;  AccountName=****;AccountKey=*****;EndpointSuffix=core.windows.net"
   }
}

此代码在本地计算机上的visual studio中运行良好。但在azure portal上发布时,它无法从函数中读取blob路径。json并给出错误为

Invalid blob path specified : ''. Blob identifiers must be in the format 'container/blob'.

我已经使用命令发布了local.settings.json的contains。

func azure functionapp publish FUNCTIONNAME --build-native-deps --publish-local-settings -i

.有人能告诉我出版后我缺少什么吗?

共有1个答案

笪建章
2023-03-14

您是否使用Azure门户中的run按钮来测试您的功能?blob触发器的工作方式是,在右侧的“测试”选项卡中,您可以指定要手动发送触发事件的blob的名称,强制运行函数:

这个想法是您应该编辑请求正文框的内容,并在您的帐户中放入一个有效blob的路径。这样触发器就会运行并找到blob并检索它。因此,如果您不修改请求正文框,那么它将查找一个blob,但找不到它并抛出404错误。

另外,请查看以下配置容器名称的文档

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#storage-blob-trigger

另请验证你的设置是否已在门户中发布。

func azure functionapp publish "functionname" --publish-local-settings

希望有帮助。

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

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

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

  • 我正在使用 Blob 触发器 Azure 函数来获取 Blob 文件数据,只要任何文件上传到容器。 使用上述方法,我能够获取上传的项目的URL。目前,上述代码是使用 Azure 提供的“在门户中开发”选项生成的。 是否有一种方法可以获取已上传的Blob文件的SAS URL?

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

  • 当我在.NET Core 2.0中使用VS2017创建Azure函数并在本地运行时,我的blob触发器工作正常。但当我发布到Azure时,触发器不会触发,也不会将日志写入Azure门户控制台。 发布后,我转到Azure门户并看到此错误:“未注册绑定类型'bbloTrigger'。 然后我尝试安装Microsoft.Azure.WebJobs.Extensions。但它失败了。(我是通过尝试在门户上