我正在尝试最终更改trace-id,所以请告诉我我是否采取了错误的方法。 我目前正在考虑的是创建一个段,并将parent-id添加为我想要的trace_id,这样一个跟踪可以跟随另一个跟踪。我试图这样做的原因是因为在aws x-ray中不支持诸如kinesis流之类的aws的异步部分。
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来连接在kinesis流之前和之后发生的两个事件?
答案 0 :(得分:0)
当在Lambda中使用X-Ray SDK时,Lambda会创建它自己的段(并将其发送到Lambda函数代码的带外),SDK会创建一个" facade"在上下文中作为占位符给出Lambda创建的段(通过process.env._x_amzn_trace_id公开)的父ID和ID。 SDK仅创建附加到此Facade段的子段,当Lambda函数结束时,将发送这些子段并将服务组合在一起。每次Lambda函数触发,并且它不是冷启动时,Facade段将使用Lambda提供的新父ID和ID刷新自身(调用resolveLambdaTraceData)。 SDK不期望在上下文中设置Lambda中的用户创建的段。使用手动创建的段,resolveLambdaTraceData函数不可用,因此出现错误,并且当在上下文中设置时,它会在检测到单独的Lambda执行时自动触发。
您能否详细了解您的用例?