You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在X-Ray服务图中关联同一WebSocket连接ID的两次请求?

在X-Ray服务图中关联WebSocket的/auth和/otp请求流程

要把这两个请求在X-Ray服务图中关联为同一个流程,核心是通过X-Ray追踪上下文传递,让后续的/otp请求继承/auth请求的追踪链路,具体实现步骤如下:

  • 提取并传递/auth请求的追踪ID
    当Api Gateway处理/auth请求时,X-Ray会自动生成追踪ID。你可以在处理/auth的Lambda(或启动Step Function的组件)中,通过环境变量AWS_XRAY_TRACE_ID获取当前追踪ID,或者从X-Ray上下文对象中提取。随后将这个追踪ID通过WebSocket回调消息返回给客户端,比如在响应消息里添加traceId字段。

  • 客户端携带追踪ID发起/otp请求
    客户端收到WebSocket的回调后,把拿到的traceId放到/otp请求的请求头中。推荐使用X-Ray标准头X-Amzn-Trace-Id,这样后续服务端组件能自动识别;如果用自定义头,后续需要在服务端手动处理关联逻辑。

  • 在/otp请求流程中关联追踪上下文

    • 若使用标准头X-Amzn-Trace-Id:Api Gateway和Lambda会自动识别该头,将/otp请求的追踪链路直接关联到/auth请求的原有追踪流程中,X-Ray服务图会自动把这两个请求归为同一个追踪会话。
    • 若使用自定义头:在处理/otp的Lambda中,需要手动初始化子追踪并关联父追踪ID。以Python为例,借助aws-xray-sdk实现的代码示例如下:
      from aws_xray_sdk.core import xray_recorder
      
      def lambda_handler(event, context):
          # 从自定义请求头中获取/auth请求的追踪ID
          parent_trace_id = event['headers']['X-Custom-Trace-Id']
          # 启动关联父追踪的子段
          xray_recorder.begin_segment(
              name='OTP-Handler',
              trace_id=parent_trace_id
          )
          
          # 执行业务逻辑:发送SendTaskSuccessRequest恢复Step Function
          # ...
          
          xray_recorder.end_segment()
      
  • 验证Step Function链路关联
    当/otp请求触发Lambda调用SendTaskSuccessRequest时,X-Ray会自动将这个操作关联到Step Function的原有追踪上下文(该上下文来自初始的/auth请求),最终在X-Ray服务图中就能看到/auth请求、暂停的Step Function、/otp请求、恢复Step Function的完整关联链路。

内容的提问来源于stack exchange,提问作者JobaDiniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:58:21