带自托管Kafka事件源的Lambda无AWS X-Ray追踪问题咨询
AWS X-Ray追踪失效问题:Kafka事件源触发Lambda后的追踪异常
初始架构与测试背景
初始搭建的架构如下:
SelfManagedKafkaEventSource --> Lambda#A* --> ApiGateway#B* --> Lambda#B*
(注:resource* 表示已启用/接入XRay的资源)
已为Lambda#A、ApiGateway#B、Lambda#B启用XRay并完成代码接入,Lambda#A需调用外部客户端,因此需要完整的追踪数据。开发环境手动测试(无KafkaEventSource触发)时,所有调用均能生成正常的XRay追踪记录。
生产环境问题现象
接入SelfManagedKafkaEventSource后,XRay完全失效。查阅AWS文档发现:X-Ray追踪目前不支持带有Amazon Managed Streaming for Apache Kafka的Lambda函数。但奇怪的是,未直接连接KafkaEventSource的Lambda#B也无法生成追踪记录,仅通过Lambda控制台手动测试时才能正常生成。
尝试的中间方案
尝试新增禁用XRay的KafkaProxyLambda对接KafkaEventSource,调整后架构如下:
SelfManagedKafkaEventSource --> KafkaProxyLambda --> Lambda#A* --> ApiGateway#B* --> Lambda#B*
但问题依旧,仅手动测试KafkaProxyLambda时能生成正常追踪,通过Kafka事件触发的链路仍无XRay记录。
最终可行方案
唯一有效的解决方法是在Lambda#A前新增ApiGateway#A,最终架构调整为:
SelfManagedKafkaEventSource --> KafkaProxyLambda --> ApiGateway#A --> Lambda#A* --> ApiGateway#B* --> Lambda#B*
调整后XRay追踪恢复正常。
疑问
- 是否有其他人遇到过类似的问题?
- 我是否遗漏了某些AWS配置项?
- 除了新增ApiGateway的方案,还有没有其他获取完整追踪数据的方法?
内容的提问来源于stack exchange,提问作者Mordor1110
相关产品推荐
相关产品推荐

