小能豆

Azure Functions - BlobTrigger - 如何使用容器中的任何文件触发函数?

py

我遇到了 Azure 函数的问题。

我在存储帐户的容器上构建了一个由新文件触发的 Azure 函数。问题是(对我而言)似乎不可能在不指定名称的情况下使用通用文件触发该功能!

我搜索了官方文档,但没有指定如何引用通用文件。预期的行为是当我在特定容器中上传任何文件(具有任何名称)时触发一个函数,例如“container/*”。

这是我的简单功能:

function.json

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "inputBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "premium-input/*",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

init.py

import logging
import azure.functions as func


def main(inputBlob: func.InputStream):
    logging.info("START EXECUTION")
    logging.info(f'NAME {inputBlob.name}')
    logging.info(f'URI {inputBlob.uri}')
    logging.info("END EXECUTION")

我已经尝试在 EventGrid 上使用事件,但我更愿意避免使用它......


阅读 82

收藏
2023-05-28

共1个答案

小能豆

我尝试将通用文件上传到容器,如下所示,我的函数被触发了。如果您将路径更改premium-input/*premium-input/{name},它将起作用。

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"URI: {myblob.uri}\n"
f"Blob Size: {myblob.length} bytes")

function.json

{
"bindings": [
{
"name": "myblob",
"type": "blobTrigger",
"direction": "in",
"path": "demo/{name}",
"connection": "your connection string"
}
]
} 

Container- 在此处输入图像描述

Logs- 在此处输入图像描述

在此处输入图像描述

2023-05-28