我有一个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)
但这些都没有奏效,它们都导致了错误。我可以从这个或一些建议中得到一些帮助吗?
由于
答案 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 trigger或blob 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}
将为您提供触发功能的文件的名称。