如何让 Azure 函数只触发文件,而不触发文件夹?
How to make Azure function trigger only for files, not for folders?
我有一个这样设置的 Azure 函数。
{
"scriptFile": "identifier.py",
"bindings": [
{
"name": "blob",
"type": "blobTrigger",
"direction": "in",
"path": "customers/{blob}",
"connection": "DL_GEN2_STORAGE"
}
]
}
我遇到的问题是该函数会触发在 blob 存储中创建的文件夹和文件。
能否指定它只触发文件而不触发文件夹?
您遇到的问题是 {blob}
无法区分文件夹或文件,因为 Azure 存储 Blob 没有目录的概念。这个意义上的目录只是 blob 名称的一部分。
如果在上传时向文件添加了前缀,您可以根据 blob 名称进行过滤,但如果您无法控制它,您的限制就非常有限。
如果有人感兴趣的话。我遇到的问题是文件夹在触发 Azure 函数时会抛出错误,因为它是该函数的未知数据类型。我目前的解决方案是检查 blob 的大小。
def main(blob: func.InputStream):
if blob.length is None:
logging.info("The blob has no data in it.")
logging.info("The blob is most likely a folder.")
return
这样至少在 blob 存储中创建文件夹时不会抛出错误。
我有一个这样设置的 Azure 函数。
{
"scriptFile": "identifier.py",
"bindings": [
{
"name": "blob",
"type": "blobTrigger",
"direction": "in",
"path": "customers/{blob}",
"connection": "DL_GEN2_STORAGE"
}
]
}
我遇到的问题是该函数会触发在 blob 存储中创建的文件夹和文件。
能否指定它只触发文件而不触发文件夹?
您遇到的问题是 {blob}
无法区分文件夹或文件,因为 Azure 存储 Blob 没有目录的概念。这个意义上的目录只是 blob 名称的一部分。
如果在上传时向文件添加了前缀,您可以根据 blob 名称进行过滤,但如果您无法控制它,您的限制就非常有限。
如果有人感兴趣的话。我遇到的问题是文件夹在触发 Azure 函数时会抛出错误,因为它是该函数的未知数据类型。我目前的解决方案是检查 blob 的大小。
def main(blob: func.InputStream):
if blob.length is None:
logging.info("The blob has no data in it.")
logging.info("The blob is most likely a folder.")
return
这样至少在 blob 存储中创建文件夹时不会抛出错误。