You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查Azure Event Grid事件投递失败的原因?

Event Grid事件投递失败(Azure Function订阅者)排查步骤

当Event Grid事件投递失败且Azure Function未被调用时,按以下步骤逐一排查:

1. 查看Event Grid订阅的失败事件详情

  • 在Azure门户进入目标Event Grid订阅,找到失败的事件列表,点击具体事件查看完整错误信息:
    • 重点关注HTTP状态码(如401权限错误、400格式错误、404端点不存在)和错误描述,这是定位问题的核心线索。

2. 验证订阅端点配置

  • 确认Event Grid订阅的目标端点与Azure Function的Event Grid触发URL完全一致,必须包含完整的路径和访问密钥:
    正确格式示例:https://<函数应用名称>.azurewebsites.net/runtime/webhooks/eventgrid?functionName=<函数名称>&code=<函数访问密钥>
  • 检查code参数是否正确,该密钥是Function的访问凭证,缺失或错误会直接导致投递被拒绝,函数不会收到请求。

3. 检查权限配置

  • 若使用系统分配身份验证:确保Event Grid的身份被授予函数应用参与者权限,或者更细粒度的Microsoft.Web/sites/functions/invoke/action权限。
  • 若使用访问密钥验证:确认密钥未过期、未被修改,且在订阅配置中正确填写。

4. 检查死信队列与重试策略

  • 如果订阅配置了死信队列,前往对应的存储账户,查看死信容器中的消息,里面会包含完整的事件内容和失败原因,可快速定位事件格式或投递规则问题。
  • 查看重试状态:若为临时网络波动或函数短暂不可用,Event Grid会自动重试,但函数未被调用的情况下,大概率不是重试能解决的配置类问题。

5. 确认Azure Function的触发与状态

  • 检查Function的Event Grid触发器绑定配置:确保function.json中type为eventGridTrigger,参数配置无拼写错误。
  • 确认Function处于已启用状态,函数应用本身未被停止或处于异常运行状态。

6. 排查网络限制

  • 若函数应用配置了IP限制或防火墙:将Azure Event Grid的服务标签EventGrid加入允许列表,确保Event Grid的请求能到达函数端点。
  • 若函数应用部署在虚拟网络中:检查网络安全组(NSG)规则,确保入站流量允许Event Grid的服务IP访问函数应用的端口(通常为443)。

7. 手动测试事件投递

  • 使用curl或Postman手动发送测试事件到Function的触发URL,验证函数是否能正常响应:
    curl -X POST -H "Content-Type: application/json" -d '[{
      "id": "test-event-001",
      "eventType": "Test.CustomEvent",
      "subject": "test/demo",
      "eventTime": "2024-05-20T14:00:00Z",
      "data": {"testKey": "testValue"},
      "dataVersion": "1.0"
    }]' "https://<函数应用名>.azurewebsites.net/runtime/webhooks/eventgrid?functionName=<函数名>&code=<访问密钥>"
    
    • 若手动测试失败:问题出在Function本身,需排查函数的代码、配置或运行环境。
    • 若手动测试成功:问题可能出在Event Grid的订阅配置或事件源的事件格式上。

内容的提问来源于stack exchange,提问作者Nikita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:22:56