Azure函数Blob触发器事件订阅创建后消失问题求助
问题描述
在Blob容器中创建.xlsx文件时触发Azure Functions函数,采用Event Grid实现。本地运行正常,但部署到云端后,创建的Event Subscription刷新页面后立即消失,函数无法触发。相关代码配置如下:
init.py
import logging import azure.functions as func def main(myblob: func.InputStream): print(f"TIPO: {type(myblob)}") logging.info(f"Python blob trigger function processed blob \n" f"Name: {myblob.name}\n" f"Blob Size: {myblob.length} bytes")
function.json
{ "scriptFile": "__init__.py", "bindings": [ { "name": "myblob", "type": "blobTrigger", "direction": "in", "path": "samples-workitems/{name}", "source": "EventGrid", "connection": "mvpblobpoc_STORAGE" } ] }
host.json
{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } } }, "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[3.3.0, 4.0.0)" }, "concurrency": { "dynamicConcurrencyEnabled": true, "snapshotPersistenceEnabled": true } }
解决建议
- 检查存储账户权限:确保函数应用的系统标识(或连接字符串对应的账户)拥有存储账户的Event Grid Data Sender权限,同时Event Grid需能访问存储账户的事件源。
- 验证扩展与运行时兼容性:确认host.json中扩展包版本(
[3.3.0, 4.0.0))适配Azure Functions v4运行时,云端函数应用需配置为v4版本。 - 排查订阅创建失败细节:
- 用Azure CLI执行
az eventgrid event-subscription list --source-resource-id <你的存储账户ID>,确认订阅是否实际未创建成功。 - 查看存储账户事件订阅的历史记录,检查是否有权限不足、端点验证失败等错误。若函数应用启用了访问限制,需允许Event Grid的服务标签或IP范围访问。
- 用Azure CLI执行
- 确认连接字符串有效性:云端函数应用的应用设置中,
mvpblobpoc_STORAGE连接字符串需正确配置,且对应账户拥有Blob数据读取及事件订阅相关权限。 - 手动创建事件订阅:跳过函数自动创建逻辑,手动在存储账户的Event Grid事件源中创建订阅,目标选择对应Azure Functions的blob触发器,验证订阅是否能持久化。
- 查看函数运行日志:通过Application Insights或函数应用的日志流,排查是否有订阅创建失败的错误日志,比如端点超时、权限缺失等。
内容的提问来源于stack exchange,提问作者Atilio
相关产品推荐
相关产品推荐

