AWS Lambda中AWS XRay追踪异常问题排查求助
Lambda X-Ray 错误排查与修复记录
问题背景
流水线执行非Lambda相关变更后,某Lambda函数出现X-Ray相关错误,此前运行正常。当前配置:
- 使用默认自动追踪模式
- Lambda已启用X-Ray追踪,且附加
AWSXRayWriteOnlyAccess托管策略 - 代码中导入
aws-xray-sdk-core,原本指定版本为^3.5.4
涉及代码片段
import AWSXRay from 'aws-xray-sdk-core'; export const handler = async (event, context) => { const segment = AWSXRay.getSegment(); const handleError = async (err) => { const handleErrorSegment = segment.addNewSubsegment("handleError"); const errorMessage = err?.message || err?.errorMessage || err; handleErrorSegment.addMetadata("Error Message: ", errorMessage); handleErrorSegment.close(); throw err; }; try { someFunctionHere(event); } catch (err) { return handleError(err); } };
触发的错误日志
- 初始化阶段错误:
2024-06-06T17:27:22.352Z undefined ERROR _X_AMZN_TRACE_ID is missing required information 2024-06-06T17:27:22.352Z undefined ERROR _X_AMZN_TRACE_ID is missing required information 2024-06-06T17:27:22.353Z undefined ERROR Empty or non-string trace ID provided
- 函数调用错误:
2024-06-06T17:27:22.390Z dbe0fb0b-63e1-5c4e-8471-a5d090506516 ERROR Invoke Error { "errorType": "TypeError", "errorMessage": "Cannot read properties of undefined (reading 'addMetadata')", "stack": [ "TypeError: Cannot read properties of undefined (reading 'addMetadata')", " at handleError (file:///var/task/index.js:80:24)", " at triggerStepFunction (file:///var/task/index.js:43:5)", " at async Runtime.handler (file:///var/task/index.js:108:3)" ] }
排查步骤与结论
- 验证基础配置:确认X-Ray追踪已启用、IAM权限
AWSXRayWriteOnlyAccess配置正确,排除权限和基础设置问题。 - 检查依赖版本:由于使用版本范围
^3.5.4,流水线可能自动升级到了3.7.0版本。 - 定位问题根源:最终确认
aws-xray-sdk-core@3.7.0引入了BUG,导致自动追踪模式下无法正确获取Segment,进而触发_X_AMZN_TRACE_ID相关错误和后续的undefined调用异常。 - 修复方案:锁定依赖版本为
3.5.4或升级至修复该BUG的后续版本,重新部署后问题解决。
内容的提问来源于stack exchange,提问作者Thanos
相关产品推荐
相关产品推荐

