Azure中Blob上传触发EventGridTrigger函数配置求助
解决Blob上传触发Event Grid函数的后续配置步骤
你已经完成了函数端的基础配置和订阅的初步关联,接下来只需补充以下关键步骤,就能让Blob上传事件正确触发你的函数:
1. 完善Event Grid订阅的事件筛选设置
在存储账户的「Events」页面,进入你创建的订阅详情页:
- 指定触发事件类型:在「事件类型」区域,勾选Blob存储分类下的
BlobCreated事件(仅上传场景只需勾选这一项) - 添加筛选规则(可选):
- 若只想触发特定容器的Blob上传,在「筛选器」中添加主题筛选器,输入容器路径,格式为
/blobServices/default/containers/你的容器名称 - 若需按文件类型筛选(比如仅触发
.pdf文件),添加高级筛选器,选择data.url字段,运算符选Contains,值填入.pdf
- 若只想触发特定容器的Blob上传,在「筛选器」中添加主题筛选器,输入容器路径,格式为
2. 配置函数应用的权限
确保函数应用具备接收Event Grid事件的权限:
- 进入函数应用的「身份标识」页面,启用系统分配的托管标识
- 切换到存储账户的「访问控制(IAM)」页面,添加角色分配:
- 角色选择「Event Grid数据接收者」
- 成员类型选「托管标识」,并选中你的函数应用对应的系统标识
3. 验证触发效果
- 手动上传一个Blob到目标存储容器
- 进入函数应用的「监测」→「日志」页面,查看是否有
Python EventGrid trigger processed an event的日志输出,出现该日志则说明触发成功 - 若未触发,排查方向:
- 确认订阅是否正确勾选
BlobCreated事件类型 - 检查存储账户与函数应用是否处于同一Azure区域(跨区域订阅可能存在限制)
- 验证函数应用的系统标识是否已添加「Event Grid数据接收者」角色
- 确认订阅是否正确勾选
你的函数配置参考
function.json:
{ "scriptFile": "__init__.py", "bindings": [ { "type": "eventGridTrigger", "name": "event", "direction": "in" } ] }
init.py:
import json import logging import azure.functions as func def main(event: func.EventGridEvent): result = json.dumps({ 'id': event.id, 'data': event.get_json(), 'topic': event.topic, 'subject': event.subject, 'event_type': event.event_type, }) logging.info('Python EventGrid trigger processed an event: %s', result)
内容的提问来源于stack exchange,提问作者Binyamin Even
相关产品推荐
相关产品推荐

