首页 > 解决方案 > 在不同的 Lambda 函数中显式设置 requestId

问题描述

我正在尝试使用 AWS APIGateway/Lambda 函数集成构建无服务器应用程序。

我有以下设置:

  * Two APIGateway resources. Calling them service A and service B for now.
  * Two Lambda functions which act the the backend, responsible for processing the requests from APIGateway. Calling them LambdaFunction A and LambdaFunction B for now. 


ServiceA -> LambdaFunctionA
ServiceB -> LambdaFunctionB

ServiceA->ServiceB

现在,根据设置 serviceA 可以调用 ServiceB。我想跟踪一个从 serviceA 到 serviceB 的请求。我想这样做的一种方法是通过 requestIds。我试图查看在 serviceA 调用 serviceB 时是否有某种特定的方式来持久/明确提供 requestIds?我查阅了 AWS 文档,但找不到任何具体的机制。

我的另一个选择是将我的 Lambda 函数与 Xray 集成,然后可能在 Xray 上下文映射/跟踪中传递 requestId。我怀疑我是第一个尝试跨多个 Lambda 函数跟踪请求的人,并认为已经有一种机制可以做到这一点。任何帮助将不胜感激!

标签: aws-lambdaaws-xray

解决方案


AWS X-Ray 已使用跟踪 ID,这些跟踪 ID 用于跨案例 servicea 和 serviceb 中的两个资源进行上下文传播。对于 API Gateway 和 Lambda,如果您在入口点 api 网关或 lambda 上启用了 X-Ray,则跟踪 id 的上下文传播是自动的。API Gateway 或 lambda 中的 X-Ray SDK 为您生成的跟踪 id 用于唯一标识请求。如果您有自定义请求 ID,您还可以将其作为注释添加到 X-Ray 片段中。


推荐阅读