aws-lambda - 在不同的 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 X-Ray 已使用跟踪 ID,这些跟踪 ID 用于跨案例 servicea 和 serviceb 中的两个资源进行上下文传播。对于 API Gateway 和 Lambda,如果您在入口点 api 网关或 lambda 上启用了 X-Ray,则跟踪 id 的上下文传播是自动的。API Gateway 或 lambda 中的 X-Ray SDK 为您生成的跟踪 id 用于唯一标识请求。如果您有自定义请求 ID,您还可以将其作为注释添加到 X-Ray 片段中。
推荐阅读
- java - OutputStreamWriter 仅将一项写入文件
- sql-server - 使用等效的 SET STATISTICS 监控 SSIS 数据流
- javascript - 只需使用 JS 在 DOM 中插入一些结构化的自定义 HTML
- amazon-web-services - 无法将 KMS 密钥应用到 AWS CloudWatch 日志组
- python - 具有相关名称的反向查找
- c# - 布尔值的 C# 条件不一样
- python - 在 Python 中撤销 celery 任务时如何退出 selenium webdriver
- freemarker - Freemaker 以下已评估为 null 或缺失
- amazon-web-services - [返回结果不正确]AWS Redshift(RedShift)中Join语句中Limit不正确
- ruby-on-rails - ActiveStorage:从 s3 打开已处理的变体