setSegment意外错误TypeError:segment.resolveLambdaTraceData不是函数

问题描述:

我想最终更改trace-id,所以告诉我如果我采取了错误的方法。 我目前想要的是创建一个段,并添加父id作为我想要的trace_id所以一个跟踪可以跟随另一个跟踪。我试图这样做的原因是因为aws的异步部分,如kinesis流不支持aws x-ray。setSegment意外错误TypeError:segment.resolveLambdaTraceData不是函数

const segment = new awsXRay.Segment('1-11111111-111111111111111111111111', '1-11111111-111111111111111111111111', '1-11111111-111111111111111111111111') 
console.log(segment) 
awsXRay.setSegment(segment) 

但是,我得到的错误:

TypeError: segment.resolveLambdaTraceData is not a function 

任何想法,为什么我得到的错误,或者我如何连接,通过连接其trace_ids前后室壁运动流发生的两个事件?

当在Lambda中使用X-Ray SDK时,Lambda创建它自己的段(并将它发送到Lambda函数代码的带外),并且SDK在上下文中创建一个“facade”作为给定父项的占位符Lambda创建的段的ID和ID(通过process.env._x_amzn_trace_id公开)。 SDK仅创建附加到该外观段的子段,并且当Lambda函数结束时,这些子段被发送,并且服务将它组合在一起。每次Lambda函数触发时,它都不是冷启动,外观段将使用Lambda提供的新父ID和ID(通过调用resolveLambdaTraceData)刷新自身。 SDK不希望在上下文中设置用户创建的Lambda中的段。使用手动创建的段,resolveLambdaTraceData函数不可用,因此错误,并且在上下文中设置时,会在检测到单独的Lambda执行时自动触发。

你可以进入你的用例的更多细节?