【问题标题】:setSegment unexpected error TypeError: segment.resolveLambdaTraceData is not a functionsetSegment 意外错误 TypeError:segment.resolveLambdaTraceData 不是函数
【发布时间】:2017-09-11 22:21:33
【问题描述】:

我正在尝试最终更改跟踪 ID,如果我采取了错误的方法,请告诉我。 我目前正在考虑的是创建一个段,并将 parent-id 添加为我想要的 trace_id,以便一个跟踪可以跟随另一个跟踪。我尝试这样做的原因是因为 aws x-ray 不支持 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 来连接运动流之前和之后发生的两个事件?

【问题讨论】:

    标签: amazon-web-services x-ray


    【解决方案1】:

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

    您能否详细介绍一下您的用例?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2018-01-26
      • 1970-01-01
      • 2019-04-09
      • 2021-07-08
      相关资源
      最近更新 更多