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

Python 中与 Azure Function 的 Blob 输入绑定不起作用(inputblob.name 为 None”)。如何排除故障?

公瑞
2023-03-14

我有以下用Python编写的简单Azure函数。它是一个 HTTP 触发器,应仅从 Azure 存储帐户返回 blob 输入绑定的名称和 URI(此处为 Microsoft 的参考文档)。

import logging
import azure.functions as func
import azure.storage.blob
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

def main(req: func.HttpRequest, inputblob: func.InputStream) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    return func.HttpResponse(f"Blob name: {inputblob.name}. Blob URI: {inputblob.uri}")

我的function.json文件是这样的。我已经验证了local.settings.json中的连接字符串是正确的,并且blob路径也是正确的。

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

现在,此函数返回“JSON名称:无。JSON URI:无”。显然blob输入绑定不起作用。如何对此进行故障排除,或者我遗漏了什么?

共有1个答案

孟思远
2023-03-14

根据我的研究,目前,blob输入绑定的元数据(例如名称,长度)不是由函数主机提供的,但您仍然可以通过blob.read()访问blob绑定中的原始数据。有关更多详细信息,请参阅 https://github.com/Azure/azure-functions-python-worker/issues/576。

我的function.json

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

我的代码

import logging

import azure.functions as func


def main(req: func.HttpRequest, inputblob: func.InputStream) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    return func.HttpResponse(f"Blob conetnt: {inputblob.read()}.")
 类似资料:
  • 这是该问题的后续问题: 如何使用Azure函数删除blob? 当一个blob触发我的Azure函数时,我需要在其处理完成后将其删除。否则,容器中会出现许多斑点。 当我运行以下代码时: 方法始终返回false,并且从不删除blob。 我的猜测是blob以某种方式被函数执行锁定,因为它刚刚触发了它。 [更新1] ... [更新2] 非常感谢刘,这个问题与Azure Fundctions无关。 诀窍是在

  • 在app服务中有一个learn_DOCUMENTDB配置设置,它具有到cosmos db实例的有效连接字符串(是自动创建的)。 错误日志条目表示: 无法将CosmosDB绑定到类型“System.String”。可能的原因:1)试图绑定到“Microsoft.Azure.Documents.Client.DocumentClient,Microsoft.Azure.DocumentDB.Core,

  • 问题内容: 因此,我是一名新Java程序员,我试图弄清楚为什么一段代码无法正常工作。我遇到的问题是:“字符串兴趣= input.nextLine();”,它跳过了用户的输入并跳至下一个System.out,因此它仅在控制台中显示“您的个人资料…”在允许用户输入任何数据之前。抱歉,这是一个愚蠢的问题,我很新! 问题答案: 这样说: 其余代码可能与您上面的代码相同。 编辑: 它必须是这样的(我的意思是

  • 我在 Azure blob 存储中有一个 csv 文件,我想打开该文件并根据用户输入获取某些数据。我有两个问题: 1)空AzureWebJobStorage值在local.settings.json 我尝试使用AzureWebJobsStorage输入绑定,但值似乎为空。我不知道如何在local.settings.json中编辑什么值。因此,得到这个错误: 已执行Functions.HttpExa

  • MyBatis 3.2.8。我在SELECT中有以下代码: 当时,一切正常。但是,当时,会出现以下异常:

  • 问题内容: 我正在编写一个执行scala命令的小型python应用程序。用户可以通过STDIN插入命令,然后python应用将其转发到scala解释器。执行命令后,应用程序将显示操作结果。 这个想法是用来创建一个管道,通过该管道我可以发送命令并读取结果。这个想法很简单,但是没有用。我不明白的是,为什么在打开管道后它们不再起作用。这使得无法在python中读取命令。 这是我正在使用的代码: 问题答案