1

我正在构建一个类似于以下内容的系统:

                                  /-> Stream to Lambda -> DynamoDB
API Gateway -> AWS Lambda -> DynamoDB
                                  \-> Stream to Lambda -> DynamoDB

因此,API Gateway 调用会触发一个 lambda,该 lambda 会保存到 DynamoDB。其他 lambdas 由 DynamoDB 保存触发,它执行一些计算并将新数据保存到 dynamodb

我添加了 AWS X-Ray 跟踪,但 AWS X-Ray 将其显示为三种不同的树:

  • 到 Dynamo 的 API 网关
  • '客户' -> lamdba -> DynamoDB
  • '客户' -> lamdba -> DynamoDB

服务地图

在图像中,底部跟踪由 API Gateway 触发,但前两个由 DynamoDB 触发,然后写回它

如果我通过 DynamoDB 手动将跟踪 ID 传递给下游 lambda,有没有办法告诉 X 射线下游 lambda 是从 DynamoDB 流出的?

4

1 回答 1

1

是的,这是可能的。本质上,您只需添加一个X-Amzn-Trace-Id-header,并将您的持久跟踪 ID 作为值。

来自AWS X-Ray 文档(尽管意图略有不同):

跟踪标头安全性

跟踪标头可以源自 X-Ray 开发工具包、AWS 服务或客户端请求。您的应用程序可以X-Amzn-Trace-Id从传入请求中删除,以避免由于用户向其请求添加跟踪 ID 或采样决策而导致的问题。

在初始化 X-Ray 客户端之前如何添加标头取决于您使用的编程语言和 X-Ray SDK。X-Amzn-Trace-Id如果您的 Lambda 函数被可能传递此类标头的服务调用,您还应该考虑可能存在的 -标头。

于 2018-07-15T14:44:39.223 回答