配置Amazon Webhook与Lambda对接Telegram时Webhook无事件问题排查
问题原因及解决办法
从你提供的getWebhookInfo响应来看,核心问题是Telegram向你的Webhook URL发送请求时返回404 Not Found,导致聊天消息更新无法传递,具体排查和解决方向如下:
- API Gateway路径不匹配:你设置的Webhook URL是根域名(
https://<ID>.execute-api.us-east-1.amazonaws.com),但API Gateway可能未配置根路径的POST路由,或者Lambda集成的是某个子路径(比如/webhook)。Telegram发送的POST请求会直接命中你设置的URL,若对应路径不存在则返回404。检查API Gateway的路由规则,确保存在对应路径的POST方法,并已关联到你的Lambda函数。 - API Gateway未部署:就算配置了正确的路由,如果没有将API部署到指定阶段(比如prod),新的路由规则不会生效,请求依然会返回404。进入API Gateway控制台,确认已完成部署操作。
- Webhook URL设置不完整:多数情况下API Gateway需要包含阶段名称或子路径才能正确触发Lambda。比如你的API部署在
prod阶段,集成路径是/webhook,那么正确的Webhook URL应该是https://<ID>.execute-api.us-east-1.amazonaws.com/prod/webhook。重新设置Webhook,使用完整路径:curl -X POST https://api.telegram.org/bot<你的机器人Token>/setWebhook -d url="https://<ID>.execute-api.us-east-1.amazonaws.com/完整路径" - Lambda触发权限缺失:虽然你的Lambda能主动向Telegram发消息,但API Gateway可能没有权限调用该Lambda。检查Lambda的资源策略,确认已允许API Gateway的服务角色触发;或者检查API Gateway的集成设置,确保已配置正确的Lambda权限。
问题修复后,可再次调用getWebhookInfo,若pending_update_count逐渐减少且无错误信息,说明Webhook已正常工作。
内容的提问来源于stack exchange,提问作者Vidyak
相关产品推荐
相关产品推荐

