在AWS X-Ray中手动传播上游下游关系

时间:2018-07-15 14:07:24

标签: amazon-web-services amazon-dynamodb aws-xray

我正在建立一个类似这样的系统:

ValueError                                Traceback (most recent call last)
<ipython-input-9-e4da8990335b> in <module>()
    116 trainPredictPlot = numpy.empty_like(Y1)
    117 
--> 118 trainPredictPlot[look_back:len(trainPredict)+look_back] = trainPredict
    119 
    120 testPredictPlot = numpy.empty_like(Y1)

ValueError: could not broadcast input array from shape (11253,1) into shape (11253)

因此,API网关调用会触发一个lambda,并将其保存到DynamoDB。其他lambda由该DynamoDB save触发,后者进行一些计算并将新数据保存到dynamodb

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

  • 通往Dynamo的API网关
  • “客户”-> Lamdba-> DynamoDB
  • “客户”-> Lamdba-> DynamoDB

the service map

图像中的底部跟踪是由API Gateway触发的,而前两个跟踪是由DynamoDB触发的,然后将其写回

如果我通过DynamoDB手动将跟踪ID传递给下游Lambda,是否可以通过X射线告诉下游Lambda来自DynamoDB?

1 个答案:

答案 0 :(得分:1)

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

来自AWS X-Ray documentation(尽管意图稍有不同):

  

跟踪标头安全性

     

跟踪标头可以源自X-Ray SDK,AWS服务或   客户要求。您的应用程序可以从中删除X-Amzn-Trace-Id   传入请求,以避免用户添加跟踪ID或   根据他们的要求抽样决策。

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