如何获取使用Python触发我的Azure功能的inputBlob的名称

时间:2017-07-19 16:38:01

标签: python azure blob azure-functions

我有一个azure函数,它被一个放入blob存储的文件触发,我想知道如何(如果可能的话)获取触发该函数的blob(文件)的名称,我试过:

fileObject=os.environ['inputBlob']
message = "Python script processed input blob'{0}'".format(fileObject.fileName)

fileObject=os.environ['inputBlob']
message = "Python script processed input blob'{0}'".format(fileObject.name)

但这些都没有奏效,它们都导致了错误。我可以从这个或一些建议中得到一些帮助吗?

由于

5 个答案:

答案 0 :(得分:1)

blob名称可以通过Function.json捕获并作为绑定数据提供。请参阅下面的{filename}标记。 Function.json与语言无关,适用于所有语言。

有关详细信息,请参阅https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings处的文档。

{
  "bindings": [
    {
      "name": "image",
      "type": "blobTrigger",
      "path": "sample-images/{filename}",
      "direction": "in",
      "connection": "MyStorageConnection"
    },
    {
      "name": "imageSmall",
      "type": "blob",
      "path": "sample-images-sm/{filename}",
      "direction": "out",
      "connection": "MyStorageConnection"
    }
  ],
}

答案 1 :(得分:1)

没有关于您在说明中使用的触发器的任何信息。但幸运的是,GitHub上有一个使用Python的Azure函数的示例项目yokawasa/azure-functions-python-samples,其中包含许多使用不同触发器的示例,如queue triggerblob trigger。我认为它对你现在非常有帮助,你可以参考这些样本来编写自己的样本来满足你的需求。

希望它有所帮助。

答案 2 :(得分:0)

使用Python Azure-Functions目前无法获取inputBlob的名称。在azure-webjobs-sdk和azure-webjobs-sdk-script GitHub中有关于它的公开问题:

https://github.com/Azure/azure-webjobs-sdk/issues/1090

https://github.com/Azure/azure-webjobs-sdk-script/issues/1339

答案 3 :(得分:0)

不幸的是,这仍然是不可能的。 在Python中,您可以执行以下操作:

import azure.functions as func
import os
def main(blobin: func.InputStream):
    filename=os.path.basename(blobin.name)

答案 4 :(得分:0)

如果要获取触发功能的文件的文件名,则可以:

在function.json中使用{name}:

{
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "path": "MyBlobPath/{name}",
      "direction": "in",
      "connection": "MyStorageConnection"
    }
  ]
}

该功能将由您的blob存储中的更改触发。

获取在python中触发该函数的文件的名称( init .py):

def main(myblob: func.InputStream):
    filemane = {myblob.name}

将为您提供触发功能的文件的名称。