AWS X-Ray Node.js Lambda跨函数调用未采样追踪问题求助
Lambda X-Ray追踪子函数缺失问题排查方向
采样上下文传递检查
调试日志提示Associated segment is marked as not sampled,说明子Lambda的追踪segment被判定为未采样。需确认主Lambda的追踪上下文是否正确传递给子Lambda:同步调用Lambda时,X-Ray依赖SDK自动传递追踪头,检查子Lambda执行环境中是否能获取到主函数的追踪上下文;默认采样规则下,子函数应继承主函数的采样决策,若主函数被采样,子函数也应进入采样链路。SDK配置一致性检查
确保子Lambda1、子Lambda2的代码中完成了X-Ray SDK的正确初始化:- 必须调用
AWSXRay.captureAWS(require('aws-sdk'))捕获AWS SDK实例,用于调用Lambda服务; - 若调用外部API依赖
https模块,需执行AWSXRay.captureHTTPsGlobal(require('https'), true); - 所有Lambda统一使用
aws-xray-sdk": "^3.3.3"版本,避免版本差异导致的上下文传递异常。
- 必须调用
Lambda追踪配置验证
- 确认所有Lambda的X-Ray追踪模式设置为Active(自动模式),而非PassThrough;
- 检查Lambda执行角色是否包含
xray:PutTraceSegments和xray:PutTelemetryRecords权限,自定义角色需手动添加该权限策略。
外部API调用捕获检查
若子Lambda使用https以外的HTTP客户端(如axios、fetch),仅配置captureHTTPsGlobal无法捕获外部API调用的追踪信息,需针对对应客户端添加X-Ray捕获配置,比如对axios需封装拦截器注入追踪头。
内容的提问来源于stack exchange,提问作者Mahesh.G
相关产品推荐
相关产品推荐

