Azure Event Grid未将失败事件死信至配置存储容器求助
Azure Event Grid事件未死信至存储容器问题排查与解决
问题概述
配置Azure Event Grid将发布失败的事件死信至存储容器abcaccount/deadletters,但当Service Bus Topictest-topic被删除后,Blob创建事件在达到10次重试后被丢弃,未进入死信容器,诊断日志显示NotFound(传递端点未找到)错误。
排查要点
死信存储权限验证
确认Event Grid具备向abcaccount的deadletters容器写入数据的权限:- 若使用系统分配身份,需为Event Grid系统身份添加存储Blob数据参与者角色,作用域覆盖目标存储账户或
deadletters容器。 - 若使用连接字符串,需确保连接字符串拥有
Write权限,且未过期。
- 若使用系统分配身份,需为Event Grid系统身份添加存储Blob数据参与者角色,作用域覆盖目标存储账户或
死信配置正确性检查
- 核对事件订阅
blob-created-event的死信设置:存储账户名称abcaccount、容器名deadletters需完全匹配(存储容器名区分大小写,仅允许小写字母、数字和短横线)。 - 确认
deadletters容器已创建,且存储账户未设置防火墙/私有端点规则阻止Event Grid访问(若启用防火墙,需勾选“允许受信任的Azure服务访问此存储账户”)。
- 核对事件订阅
重试与死信触发逻辑确认
- 检查事件订阅的重试策略:确认最大重试次数(10次)、事件TTL配置正确。注意:
NotFound(404)属于默认不可恢复错误,Event Grid可能不会执行全部10次重试,而是直接触发死信流程。若此时死信配置异常,事件会被丢弃。 - 查看诊断日志的事件生命周期轨迹,确认事件是否触发死信流程,是否存在死信写入失败的日志条目。
- 检查事件订阅的重试策略:确认最大重试次数(10次)、事件TTL配置正确。注意:
解决方案
修复存储权限
- 进入Azure门户,打开
abcaccount存储账户,导航至访问控制(IAM)。 - 添加角色分配:选择角色为存储Blob数据参与者,成员类型选“Azure AD用户、组或服务主体”,搜索并选择
Azure Event Grid(系统身份),完成分配。
- 进入Azure门户,打开
验证死信配置
- 打开事件订阅
blob-created-event,进入死信设置页,确认存储账户、容器名无误,身份验证方式(身份/连接字符串)配置正确。 - 检查
deadletters容器状态,确保容器未被删除或设置特殊权限。
- 打开事件订阅
调整错误重试策略(可选)
若需让Event Grid对404错误执行重试,可在事件订阅的重试策略中配置自定义规则,将404状态码加入允许重试的列表。但需注意,针对已删除的Service Bus Topic,重试无法解决根本问题,仅能确保死信流程被触发。
内容的提问来源于stack exchange,提问作者Navin Varu
相关产品推荐
相关产品推荐

